1.二分查找
个人习惯使用左闭右闭的方法,不管用来求位置、求最大还是最小,都是同一个写法
int findborder(vector<int>& nums,int tgt){
int left = 0, right = nums.size();
while(left <= right){
int mid = left + (right - left) / 2; //防溢出写法
if(nums[mid] < tgt)
left = mid + 1;
else
right = mid - 1;
}
return left;
}
注意返回的是下标
1.如果要求有序数组nums中是否有数字a,可以调用findborder(nums, a)
如果不存在,要求插入的位置,也可以这样调用
2.求边界的例子一时没想起来,日后见到再补
标签:二分,nums,int,算法,findborder,left From: https://www.cnblogs.com/Amroning/p/18504459