思路:
是常规的二分法, 需要注意的是,当数字不存在的时候,需要返回插入该数进序列并保持有序的位置,即返回的是最后一个小于查找数target的位置。二分查找最后结束的位置,即退出循环时的左边界或者右边界+1。
参考代码:
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int left = 0, right = nums.size()-1, mid;
while(left <= right)
{
mid = (left + right) / 2;
if(nums[mid] < target)
left = mid + 1;
else if (nums[mid] > target)
right = mid - 1;
else
{
if(nums[mid] == target)
{
return mid;
}
}
}
return right + 1;
}
};