题目
- 给一个排序后的升序数组,给一个目标值
- 若目标值在数组中,返回其下标,若不在,返回要插入的 index
思路
- 二分查找,注意要插入元素,插入的元素要比 left 大,比 right 小,所以在二分的时候,每次 left = mid + 1, right = mid
代码
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int l = 0, r = nums.size();
while (l < r) {
int mid = (l + r) /2;
if (nums[mid] == target)
return mid;
if (nums[mid] < target)
l = mid + 1;
else
r = mid;
}
return l;
}
};