题目描述
给你一个数组 nums ,数组中的数字 要么 出现一次,要么 出现两次。
请你返回数组中所有出现两次数字的按位 XOR 值,如果没有数字出现过两次,返回 0 。
示例 1:
输入:nums = [1,2,1,3]
输出:1
解释:
nums 中唯一出现过两次的数字是 1 。
示例 2:
输入:nums = [1,2,3]
输出:0
解释:
nums 中没有数字出现两次。
示例 3:
输入:nums = [1,2,2,1]
输出:3
解释:
数字 1 和 2 出现过两次。1 XOR 2 == 3 。
算法分析
利用stl里的哈希表和set容器
完整代码
class Solution {
public:int duplicateNumbersXOR(vector<int>& nums) {int ans=0;unordered_map<int,int>m;set<int>s;//需要去重for(auto i:nums)m[i]++;for(auto kv:m){if(kv.second==2)s.insert(kv.first);}for(auto i:s)ans^=i;return ans;}
};