整数二分
123455555555555678
找第一个5:A[mid] >= 5
while(l < r) {
int mid = l + r >> 1;
if(A[mid] >= k) {
r = mid;
} else {
l = mid + 1;
}
}
最后一个5:A[mid] <= 5
while(l < r) {
int mid = l + r + 1 >> 1;
if(A[mid] <= k) {
l = mid;
} else {
r = mid - 1;
}
}
此外,mid是在while里面生成的。
浙公网安备 33010602011771号