Description
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?
分析
题目的意思是:找出一个数组缺少的值,这个数组只包含0~n,n+1为数组的大小。
- 等差数列求和,然后减去整个数组的和,相减就是剩下的了。
代码
class Solution {
public:
int missingNumber(vector<int>& nums) {
int sum=0;
int n=nums.size();
for(auto a:nums){
sum+=a;
}
return 0.5*n*(n+1)-sum;
}
};
参考文献
[LeetCode] Missing Number 丢失的数字