rt,某一个题里二分函数炸了,看了一下正解,找不到区别
注:
l为左端点,r为右端点,uke是vector<int>
int finded(int x, int l, int r){
if (l >= r - 1) {
return (r);
}
int mid = (l + r - 1) >> 1;
if(uke[mid] > x)
return finded(x, l, mid);
else
return finded(x, mid, r - 1);
}//仅仅是二分炸了,原因不明
/*正解
int finded(int x){
int l = 0, r = uke.size() - 1;
while (l < r){
int mid = (l + r) >> 1;
if(uke[mid] >= x) r = mid;
else l = mid + 1;
}
return r + 1;
}
*/