方法一:利用求和公式 1+2+...+n = n*(n+1)/2
解题思路:
利用求和公式 1+2+...+n = n*(n+1)/2,首先求出nums的size,就知道这n个数的和了,然后遍历数组nums,逐个减掉,得到的结果就是没有出现的数。
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n = nums.size();
long res = n * (n + 1) / 2;
for(auto num: nums){
res = res - num;
}
return res;
}
};
方法二:XOR
解题思路:
因为a ^ a = 0,所以,对于数组nums中的数,将所有数遍历一次,一一进行异或,再和0,1,2,...,n进行异或,由于缺失了的数字只进行了一次异或,所以异或后的结果就是缺失的数字。
class Solution {
public:
int missingNumber(vector<int>& nums) {
int res = nums.size();
for(int i = 0; i < nums.size(); i++){
res = res ^ i;
res = res ^ nums[i];
}
return res;
}
};