二分查找大于某数的最小索引:
1.数组中元素重复时,返回最接近的索引。如nums={5,7,7,8,8,10} target=5 则返回的索引值为1即 指向第一个值为7的元素
2.若返回的ans=nums.length说明数组中没有比target大的元素
public int binarySearch(int[] nums, int target) {
int start=0;
int end=nums.length-1;
int ans=nums.length;
while(start<=end) {
int mid=start+(end-start)/2;
if(nums[mid]>target) {
end=mid-1;
ans=mid;
}else {
start=mid+1;
}
}
return ans;
}
二分查找小于某数的最大索引:
与大于某数的最小索引同理,略作改变
1.数组中元素重复时,返回最接近的索引。如nums={5,7,7,8,8,10} target=10 则返回的索引值为4即指向第二个值为8的元素
2.若返回的ans=-1说明数组中没有比target小的元素
public int binarySearch(int[] nums, int target) {
int start=0;
int end=nums.length-1;
int ans=-1;
while(start<=end) {
int mid=start+(end-start)/2;
if(nums[mid]>=target) {
end=mid-1;
}else {
start=mid+1;
ans=mid;
}
}
return ans;
}