基础算法学习----二分法
二分法模板一
int l = 0, r = n - 1;
while(l < r){
int mid = l + r >> 1;
if(num[mid] >= target) r = mid;
else l = mid + 1;
}
// l即为所求边界
//找的是等于target的第一个数或者大于target的第一个数
二分模板二
int l = 0,r = n - 1;
while(l < r){
int mid = l + r + 1 >> 1;
if(num[mid] <= target) l = mid;
else r = mid - 1;
}
// l即为所求边界
//找的是等于target的最后一个数或者小于target的最后一个数
//与模板一相差的一是为了避免边界死循环
check(mid) 是检查是否满足条件的函数