//二分区间为[left,right]=[0,n],初值必须能够覆盖解的所有可能取值
//就算不存在满足条件的值,返回的也是“假设它存在,它应该在的位置”
int solve(int left,int right){
int mid;
while(left<right){
mid=left+(right-left)/2;
if(条件成立){//条件成立,第一个满足条件的元素的位置<=mid
right=mid;//往左区间[left,mid]查找
}else{
left=mid+1;
}
}
return left;//此处return left或者right都可以
}
寻找有序序列第一个满足某条件的元素的位置(二分查找)
于 2021-04-20 21:10:30 首次发布