首页 > 其他 > 详细

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

时间:2020-04-16 12:55:15      阅读:69      评论:0      收藏:0      [点我收藏+]

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

方法一:

公式法,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中缺失的数字

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

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