//解决“寻找有序序列第一个满足某条件的元素的位置”问题的固定模板
//二分区间为[left,right],初值必须能覆盖解的所有可能取值
int solve(int left,int right)
{
int mid;
while(left<right)
{
mid=(left+right)/2;
if(条件成立) //第一个满足该条件的元素的位置<=mid
{
right=mid;//搜左区间
}else{ //不满足条件
left=mid+1; //搜右区间
}
}
return left;//因为left与right相等,所以均可以返回
}
小技巧:若题目里right+left超出int范围可以将(left+right)/2改为left+(right-left)/2