Given an array containing n distinct numbers taken from 0, 1, 2, ..., n
, find the one that is missing from the array.
Example 1:
Input: [3,0,1] Output: 2
Example 2:
Input: [9,6,4,2,3,5,7,0,1] Output: 8
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
思路:
1.数学题,根据公式求出前n项和应该是多少再减去实际值即可。
附等差数列公式: 1) 第n项,
an=a1+(n-1)d。
2) 前n项和,Sn=n*a1+n(n-1)d/2或Sn=n(a1+an)/2
参考代码:
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n=nums.size()+1,sum=0;
for(int i=0;i<n-1;++i){
sum+=nums[i];
}
return n*(n-1)/2-sum;
}
};