java
int module(int l,int r,IntPredicate check){
int ans=r+1;
while(l<=r){
int mid=l+(r-l)/2;
if(check.test(mid)){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
return ans;
}
二分法利用单调性 ,把"在有序/可判定的空间里找一个位置或一个值"的代价从 O(n) 降到 O(log n)。每问一次"中点行不行",就能排除掉一半的候选。
二分算法要注意边界