根据check(mid) 函数为True时,需要调整的是 left 指针 还是 right 指针分为两种
当 check(num) == Ture 时移动的是 right 指针时
mid = left + right >> 1
while(left < right){
long mid = left + right >> 1;
if(check(mid))
right = mid;
else
left = mid + 1;
}
return left;
当 check(num) == Ture 时移动的是 left 指针时
mid = left + right + 1 >> 1 ( + 1 目的是避免死循环, 因为 >> 与 / 一样属于 向下取整)
while(left < right){
int mid = left + right +1 >> 1;
if(check(num))
left = mid;
else
right = mid -1;
}
return left;
参考文献: https://leetcode-cn.com/problems/divide-two-integers/solution/shua-chuan-lc-er-fen-bei-zeng-cheng-fa-j-m73b/