第268题:给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
缺失数字.jpg
- 高斯公式求解
首先求出数组的和,然后再利用公式求出前n+1项之和,最终求差值,即为缺失的。
//CPP
class Solution {
public:
int missingNumber(vector<int>& nums) {
int length=nums.size();
int result=(length+1)*length/2;
for(int e:nums)
result-=e;
return result;
}
};
2.位运算求解
利用“两个相同的数,使用异或可以相消除”的原理。
//Go
func missingNumber(nums []int) int {
result := 0
for i,k := range nums {
result ^= k ^ i
}
return result ^ len(nums)
}