[리트코드] 35. Search Insert Position




35. Search Insert Position

리트코드

나의 풀이

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function (nums, target) {
  let start = 0;
  let end = nums.length - 1;
  while (start <= end) {
    let mid = Math.floor((start + end) / 2);
    if (nums[mid] === target) return mid;
    else if (nums[mid] > target) end = mid - 1;
    else if (nums[mid] < target) start = mid + 1;
  }
  return start;
};

console.log(searchInsert([1, 3, 5, 6], 5));

Runtime: 106 ms, faster than 15.66% of JavaScript online submissions for Search Insert Position



효율성 좋은 코드

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
 var searchInsert = function(nums, target) {
    const arrLength = nums.length;
    let a = 0;
    
    for ( let i = 0; i < arrLength; i++ ) {
        if ( i === arrLength-1 && nums[i] !== target) a = i +1
        if (nums[i] == target || nums[i] > target) {
            return a = i
        }

    }
    return a
};

정답 코드중에 가장 효율성이 좋은 코드인데
for문을 모두 도는 경우인데 이게 logN이 되는지 모르겠다.