LeetCode:35。挿入位置を検索します
単純な二分法
二分法を継続的に使用して、ターゲット以上の最初の添え字を見つけます
ACコード
配列の最後の要素の位置が探しているものの隣にある可能性があるため、右側の境界はlenです。
class Solution {
public int searchInsert(int[] nums, int target) {
int len = nums.length;
// 可能插入末尾 >> 末尾即 len
// 因为有可能数组的最后一个元素的位置的下一个是我们要找的,故右边界是 len
int left = 0, right = len;
while(left < right) {
int mid = left + (right - left) / 2;
if(nums[mid] > target) {
right = mid;
} else if(nums[mid] < target) {
left = mid + 1;
} else {
return mid;
}
}
return left;
}
}