public static int right_bound(int[] arr,int target) {
int left = 0;
int right = arr.length-1;
while(left<=right) {
int mid = left + ((right-left)>>1);
if(arr[mid] == target) {
left = mid +1;
}
else if(arr[mid] < target) {
left = mid +1;
}
else if(arr[mid] > target) {
right = mid -1;
}
}
if((right<0)||(arr[right] != target)) {
return -1;
//当target比所有元素都小时,right的位置是-1,所以要进行判断。
}
return right;
}
二分查找中的右边界问题
于 2022-03-01 16:34:01 首次发布