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;
    }
};
posted @ 2021-08-08 08:00  dinghao1262  阅读(30)  评论(0)    收藏  举报