zoukankan      html  css  js  c++  java
  • 35. 搜索插入位置-7月17日

    题目

    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

    拓展学习

  • 相关阅读:
    空格转换
    vuex学习
    css移动端适配方法
    数组以及数组常用方法
    21-canvas事件监听
    20-canvas之形变
    [转]session 跨域共享方案
    [转载] 从mysql,代码,服务器三个方面看mysql性能优化
    [计算机]Alan Perlis人物简介
    Python环境搭建及pip的使用
  • 原文地址:https://www.cnblogs.com/BoysCryToo/p/13328887.html
Copyright © 2011-2022 走看看