标签: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