题目
Given an array containing n distinct numbers taken from 0, 1, 2, ..., n
, find the one that is missing from the array.
For example,
Given nums = [0, 1, 3]
return 2
.
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
解析
很简单,如果vector中有n个数,那么理应有n+1个数,分别为0,1,2...n+1
理应的和为(n+1)n/2
而事实上的和可以用线性时间算出,做差就得到少的那个数了。
class Solution {
public:
int missingNumber(vector<int>& nums) {
int sum = 0;
int sumReal = (nums.size()+1) * (nums.size())/2;
for (int i = 0;i<nums.size();i++)
sum += nums[i];
return sumReal - sum;
}
};