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

leetcode面试题53 - II. 0~n-1中缺失的数字

时间:2020-04-16 13:05:52      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:miss   没有   题目   solution   cto   etc   gnu   sum   遍历   

虽然是道简单题,但还是翻车了,没有看到题目的有序条件。

方法一:

公式法,O(n)

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int sum = accumulate(nums.begin(), nums.end(), 0);
        int n = nums.size();
        return (n+1)*n/2 - sum;
    }
};

方法二:

如果注意到有序,可以用二分。

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

测评机上二分比遍历还慢。。。

leetcode面试题53 - II. 0~n-1中缺失的数字

标签:miss   没有   题目   solution   cto   etc   gnu   sum   遍历   

原文地址:https://www.cnblogs.com/lfri/p/12711947.html

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