题目描述
给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。
示例 1:
输入: [3,0,1]
输出: 2
示例 2:
输入: [9,6,4,2,3,5,7,0,1]
输出: 8
解题思路
- 利用高斯公式:首项加末项的和乘以项数除以2先确定0到n的和,之后减去给定数组的所有元素之和,即得到缺失的元素
Cpp实现
class Solution {
public:
int missingNumber(vector<int>& nums) {
int l = nums.size();
int s = l * (l + 1) / 2;
int sum = 0;
for(int i = 0;i < l;i++)
{
sum += nums[i];
}
return s - sum;
}
};
解题思路
- 利用异或位运算
Java实现
class Solution {
public int missingNumber(int[] nums) {
int res = 0;
for(int i = 0;i < nums.length;i++)
{
res ^= nums[i] ^ i;
}
return res ^ nums.length;
}
}