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?
(1)
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n = nums.size(), ans = ;
for(int i = ; i < n; i++)
{
ans ^= nums[i] ^ (i+);
}
return ans;
}
};
异或0-n,异或nums。
异或0还等于原来的数。
(2)
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n = nums.size(), sum = n*(n+) / ;
for(int i = ; i < n; i++)
{
sum -= nums[i];
}
return sum;
}
};
求和相减。