一、思路
搜索数组中,第一个比target大的值(可以相等),这个值的位置,就是答案所求的位置。
我们可以从左往右遍历数组,去寻找第一个大于等于target的值,时间复杂度为O(n)。
也可以二分查找,时间复杂度为O(log n),只需稍微修改二分查找代码,即可换来时间上的优势。
二、代码
1.python
代码如下:
class Solution:
def searchInsert(self, nums, target) :
n = len(nums)
res = n
'''
1 顺序遍历
for i in range(n):
if nums[i] >= target:
return i
return n
'''
# 2 二分查找
l,r = 0,n-1
while l <= r :
mid = (l+r)//2
if nums[mid] >= target:
res = mid
r = mid-1
else :
l = mid + 1
return res
2.C++
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int n = nums.size();
int left = 0, right = n - 1, res = n;
while (left <= right) {
int mid = (right + left)/2;
if (target <= nums[mid]) {
res = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
return ans;
}
};