Description
https://blog.csdn.net/weixin_47406709/article/details/125660759
bool ok(int x){ //该函数定义要非常清晰
检查验证x值是否符合自己的设
符合 return true;
不符合 return false;
}
int l=a,r=b,mid; //如果设定左边OK, 右边不OK, 那l一定要给一个绝对OK的数(或位置), r一定要给一个绝对不OK的数(或位置). 必要时可加哨兵数据.
while(l+1<r){ //l+1<r 这个条件保证到最后l和r是相邻的, l在右边,r在右边
mid=(l+r)/2;
if(ok(mid)) l=mid; //如果设定是左边ok的,那可以很放心地直接把mid给l。
else r=mid;
}
-1 0 1 2 2 3 4 5 5 5 6 6 7 8 8 9 9 9 10 888888
l r