题目:
给定一个包含 [0, n]
中 n
个数的数组 nums
,找出 [0, n]
这个范围内没有出现在数组中的那个数。
输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。
思路:
使用异或的方法 把数组里的数 和 0 ~ n 异或^
a^a = 0 ; 0^a = a 数组经过异或运算,单独的值就剩下了
代码:
class Solution {
public:
int missingNumber(vector<int>& nums) {
int res = 0;
for(int i = 0; i < nums.size(); i++)
{
res ^= nums[i] ^ i;
}
return res ^ nums.size();
}
};