3158. 求出出现两次数字的 XOR 值

解决思路

遍历 nums,同时用一个 vis 集合记录遇到的数字。

  • 设 x=nums[i]。

  • 如果 x 不在 vis 中,说明是第一次遇到,加入 vis。

  • 如果 x 在 vis 中,说明是第二次遇到,加入答案

Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
int duplicateNumbersXOR(vector<int>& nums) {
int ans = 0;
long long vis = 0;
for (int x : nums) {
if (vis >> x & 1) {
ans ^= x;
} else {
vis |= 1LL << x;
}
}
return ans;
}
};