题目
算法思想 :这道题目是实现C++的lower_bound()函数,简单做法是直接cout<<lower_bound(nums.begin(),nums.end(),val)<<endl; 我们也可以手动写出这个函数,思想是二分查找,如果查询到则返回位置,否则返回begin就是我们要找的位置。
int binary_search(vector<int> & nums,int val)
{
int begin = 0,end = nums.size()-1;
while(begin <= end)
{
int mid =begin + (end - begin)/2;
if(val == nums[mid])
return mid;
else if(val < nums[mid])
end = mid-1;
else
begin = mid + 1;
}
return begin;
}
int searchInsert(vector<int>& nums, int target) {
int len = nums.size();
if(len == 0)
return 0;
return binary_search(nums,target);
}