https://leetcode.com/problems/search-insert-position
- 오름차순 되어 있으므로, target 이 있을법한 범위를 줄여나가는 방법이 가능하다.
🤨 이진 탐색을 이용하자
left = 0
right = nums.length - 1
while(left < right){
중간인덱스 = (right + left) / 2
if(nums[중간인덱스] < target){
left = 중간인덱스 + 1
}else {
right = 중간인덱스
}
}
return right
public int searchInsert(int[] nums, int target) {
int start = 0;
int end = nums.length-1;
while (start <= end) {
int mid = start + (end-start)/2;
if (nums[mid] == target) return mid;
else if (nums[mid] > target) end = mid-1;
else start = mid+1;
}
return start;
}
나와 동일한 방식으로 문제를 풀이한 것 같다.
다만 나는, while문에서 target이 배열에 존재하는 경우를 따로 고려하지 않았는데 이 풀이는 target이 배열에 존재하는 경우를 고려해 빠른 리턴하도록 했다.