난이도 이지 정답률 54%
타겟에 맞는 인덱스값을 반환하면 되는 문제입니다. 그냥 바이너리서치를 구현하면 되는 문제입니다. 제가 재귀함수로 해봤는데 런타임이 떠서 while문으로 풀었습니다.
Example 1:
Input: nums = [-1,0,3,5,9,12], target = 9
Output: 4
Explanation: 9 exists in nums and its index is 4
Example 2:
Input: nums = [-1,0,3,5,9,12], target = 2
Output: -1
Explanation: 2 does not exist in nums so return -1
문제풀이
let search = function(nums, target){
let start = 0;
let end = nums.length-1; // 마지막 인덱스번호
while(start <= end){ // start < end가 아닌 이유 배열을 1개를 받을 때도 사용하게
let pivot = Math.floor((start+end)/2); // 배열의 중간값 계산
if(nums[pivot] === target){
return pivot; // 인덱스값 반환
}else if(nums[pivot] > target){
end = pivot - 1; // 중간값이 크면 중간 기준에서 왼쪽만 검사
}else{
start = pivot + 1;// 중간값이 작으면 중간 기준에서 오른쪽만 검사
}
}
return -1; // 없으면 -1 리턴
}