二分法(用于找分界点)
模版(整数二分)
01
int search(int left, int right) {
int l = left, r = right;
while(l<r){
int mid = l + r +1>> 1;
if (check(mid)) l = mid;
else r = mid - 1;
}
return l;
}
02
int search(int left, int right) {
int l = left, r = right;
while(l<r){
int mid = l + r >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
}
return l;
}
根据分界点所属区间写check函数,check不同模版不同
eg:
要查找B点,B点满足性质2,则check是判断mid是否满足性质2
例题