Leetcode35. 搜索插入位置
35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
题意概述:
如果在数组当中存在目标元素,即返回目标元素的下标,否则就返回大于该元素的第一个元素的下标。
解题报告:
二分查找即可,需要注意的是本题二分查找的右边界应该是\(nums.size()\),因为如果目标元素大于数组内的所有元素,则其应该插入在数组的最后一个位置,其下标则为\(nums.size()\)。
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int l=0,r=nums.size();
while (l<r){
int mid=(l+r)>>1;
if (nums[mid]>=target) r=mid;
else l=mid+1;
}
return l;
}
};