我的解题:
使用unordered_map
遍历数组,元素没出现过就加入map,出现过就erase掉,最后将剩下的两个数返回
但是这个没有达到空间复杂度的要求
class Solution {
public:
vector<int> singleNumbers(vector<int>& nums) {
unordered_map<int,int> m;
vector<int> res;
for(int i=0;i<nums.size();i++){
if(m.count(nums[i])) m.erase(nums[i]);
else m[nums[i]]=1;
}
unordered_map<int,int>::iterator it;
it=m.begin();
res.push_back(it->first);
it++;
res.push_back(it->first);
return res;
}
};
有大佬使用异或的操作,待我看懂再来。。。