binarySearch(Object[], Object key)
方法的返回值有几种:
1、找到的情况下:如果key在数组中,则返回搜索值的索引。
2、找不到的情况下:
搜索值不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引值”;
搜索值不是数组元素,且大于数组内元素,索引值为 – (length + 1);
搜索值不是数组元素,且小于数组内元素,索引值为 – 1。
class Solution {
public int searchInsert(int[] nums, int target) {
int ans = Arrays.binarySearch(nums, target);
if(ans < 0) {
if(-ans > nums.length) return nums.length;
else return -ans -1;
}
return ans;
}
}
手写二分
class Solution {
public int searchInsert(int[] nums, int target) {
int n = nums.length;
int ans = n;
int l = 0, r = n - 1;
while (l <= r) {
int mid = ((r - l) >> 1) + l;
if (nums[mid] >= target) {
ans = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
return ans;
}
}