3158. Find the XOR of Numbers Which Appear Twice

3158. Find the XOR of Numbers Which Appear Twice

Description

You are given an array nums, where each number in the array appears either once or twice.

Return the bitwise XOR of all the numbers that appear twice in the array, or 0 if no number appears twice.

Example 1:

1
2
3
4
5
6
7
Input: nums = [1,2,1,3]

Output: 1

Explanation:

The only number that appears twice in`nums`is 1.

Example 2:

1
2
3
4
5
6
7
Input: nums = [1,2,3]

Output: 0

Explanation:

No number appears twice in`nums`.

Example 3:

1
2
3
4
5
6
7
Input: nums = [1,2,2,1]

Output: 3

Explanation:

Numbers 1 and 2 appeared twice. `1 XOR 2 == 3`.

Constraints:

  • 1 <= nums.length <= 50
  • 1 <= nums[i] <= 50
  • Each number in nums appears either once or twice.

Hints/Notes

  • Biweekly Contest 131

Solution

Language: C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
int duplicateNumbersXOR(vector<int>& nums) {
unordered_map<int, int> m;
for (int num : nums) {
m[num]++;
}
int res = 0;
for (auto it : m) {
if (it.second == 2) {
res ^= it.first;
}
}
return res;
}
};