有序数组中找到>=num最左的位置
首先通过二分查找找到的是mid == 5位置的数,arr【5】 >= 2 ,符合条件,让T记录一下这个位置,T = 5;
然后再去左边寻找,看看有没有arr>=2并且下标比5小的位置,如果有就让T记录一下这个位置,将最后的T的结
果返回。
// 有序数组中找到>=num最左的位置
// 1 2 2 3 4 5 6 7 数组
// 0 1 2 3 4 5 6 7 下标
// num == 2 return 1
public static int mostLeftNoLessNumIndex(int[] arr, int num) {
if(arr == null || arr.length == 1) {
return -1;
}
int L = 0;
int R = arr.length - 1;
// ans:是用来计数的,用来记录>=num的位置
int t = -1;
while(L <= R) {
int mid = (L + R) / 2;
if(arr[mid] >= num) {
t = mid;
R = mid - 1;
}else {
L = mid + 1;
}
}
return t;
}