码迷,mamicode.com
首页 > 其他好文 > 详细

Search Insert Position - LeetCode

时间:2019-02-04 15:23:43      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:toc   targe   arch   二分查找   log   数字   二分   title   pos   

题目链接

Search Insert Position - LeetCode

注意点

  • 输入的数组是有序的
  • 有可能是要插入头或尾

解法

解法一:遍历数组找到两个数字 ——左边的小于target右边的大于target。时间复杂度为O(n)

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int i,n = nums.size();
        for(i = 0;i < n-1;i++)
        {
            if(target > nums[i] && target <= nums[i+1])
                return i+1;
        }
        if(target <= nums[0])
        {
            return 0;
        }
        if(target > nums[n-1])
        {
            return n;
        }
        return 0;
    }
};

技术图片

解法二:二分查找,和查找数字略有不同,结束条件为left<right。时间复杂度为O(logn)

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int left = 0,right = nums.size()-1,middle;
        if(target <= nums[0])
        {
            return 0;
        }
        if(target > nums[right])
        {
            return right+1;
        }
        while(left < right)
        {
            middle = (left+right)/2;
            if(nums[middle] >= target)
                right = middle;
            else
                left = middle+1;
        }
        return right;     
    }
};

技术图片

小结

Search Insert Position - LeetCode

标签:toc   targe   arch   二分查找   log   数字   二分   title   pos   

原文地址:https://www.cnblogs.com/multhree/p/10351715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!