题目:
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?
class Solution {
public:
int missingNumber(vector<int>& nums) {
if(nums.empty()) return -1;
int n = nums.size();//n是最大数
long long sum = (n * (n + 1))>>1;//<span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px;">0+1+...+INT_MAX < long long所能表示的最大数,所有sum不会溢出</span>
for(int i = 0; i < n; ++i){
sum -= nums[i];
}
return sum;
}
};