LeetCode 35. 搜索插入位置

作者: SmallRookie | 来源:发表于2018-12-06 22:57 被阅读1次

    题目描述

    题解

    两次遍历

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

    时间复杂度为O(n),空间复杂度为O(1)

    一次遍历

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

    时间复杂度为O(n),空间复杂度为O(1)

    二分法

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

    时间复杂度为O(log\,n),空间复杂度为O(1)

    相关文章

      网友评论

        本文标题:LeetCode 35. 搜索插入位置

        本文链接:https://www.haomeiwen.com/subject/xwgacqtx.html