二分法常用格式
先根据题意求出上下界的范围
然后二分逼近
while(low<high-1){
mid=(low+high)/2
if(check(mid)){//检验mid是否满足条件
high=mid;
}else{
low=mid;
}
}
如果求的是最大化最小值,输出low,如果求的是最小化最大值,输出high
也可以写成
while(low<high){
mid=(low+high)/2
if(check(mid)){//检验mid是否满足条件
high=mid;
}else{
low=mid+1;
}
}
此时输出low要改成输出low-1,因为最后一次循环+1后没有执行
二分法其实归根结底还是另类的猜数字,只不过难点在于怎么检验数字,在检验部分的时间效率上要下功夫