题目链接
思路:
是常规的二分法, 需要注意的是,当数字不存在的时候,需要返回插入该数进序列并保持有序的位置,即返回的是最后一个小于查找数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;}
};