[리트코드] 704. Binary Search
704. Binary Search
나의 풀이
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function (nums, target) {
let start = 0;
let end = nums.length - 1;
let mid;
while (start <= end) {
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 -1;
};
console.log(search([-1, 0, 3, 5, 9, 12], 9));
Runtime: 129 ms, faster than 7.32% of JavaScript online submissions for Binary Search.
효율성 좋은 코드
var search = function (nums, target) {
let start = 0;
let end = nums.length - 1;
let mid;
while (start <= end) {
mid = Math.floor((start + end) / 2);
let num = nums[mid];
if (num == target) return mid;
else if (num > target) end = mid - 1;
else if (num < target) start = mid + 1;
}
return -1;
};
Runtime: 76 ms, faster than 81.29% of JavaScript online submissions for Binary Search.
nums[mid]를 변수에 할당해주기만 해도 성능이 훨씬 좋아졌다.
그런데 동일한 코드를 돌렸음에도 실행 속도가 두배가 차이가 났다.
리트코드에 submit할 때의 네트워크 속도나 cpu 점유율에 따라서 같은 코드여도 결과가 달라질 수 있나보다ㅠ