首页 > 其他 > 详细

35. 搜索插入位置-7月17日

时间:2020-07-17 14:32:09      阅读:40      评论:0      收藏:0      [点我收藏+]

题目

35. 搜索插入位置

技术分享图片

 

 

我的思路

这个题比较简单,用二分法即可。

在具体实现时,我最初想的是用一个滑标,迭代调整滑标的位置,但是边界调节并不好处理。

下面记一个二分法的模板,窗口法,用left和right标识当前窗口的左右边界。用mid=(left+right)/2下标对应的元素与目标值比较,根据比较结果更新left或right为mid+1或mid-1的值。直到left>right或者查找到目标值。

我的实现


class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size()-1;
        if(right<0)return 0;
        int mid;
        while(left<=right){//当left==right时还没有满足条件的会跳出循环
            mid = (left+right)/2;
            if(nums[mid]<target){
                left=mid+1;
            }else if(nums[mid]>target){
                right=mid-1;
            }else{
                return mid;
            }
        }

        if(nums[mid]>=target)return mid;
        else return mid + 1;
        
    }
};

//二分法
//本题要找的是target<=nums[i]的min i
//二分法通用模板!!!!
/**
left = 0;right = n-1;
    while(left<=right){//当left==right时还没有满足条件的会跳出循环
        mid = (left+right)/2;
        if(nums[mid]<target){
            left=mid+1;
        }else if(nums[mid]>target){
            right=mid-1;
        }else{
            return mid;
        }
        }
*/

 

时间复杂度:logn

拓展学习

35. 搜索插入位置-7月17日

原文:https://www.cnblogs.com/BoysCryToo/p/13328887.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!