题目描述
blablabla
样例
blablabla
算法1
首先计算所有数的异或和,然后找到异或和的哪一位为1,然后按这一位将数组分为两个集合,
两个集合中存储的数字分别是两个仅出现一次的数和重复的数,然后分别对两个集合求异或和,即可得到答案
class Solution {
public:
vector<int> findNumsAppearOnce(vector<int>& nums) {
int sum=0;
for (auto x : nums) sum^=x;
int k=0;
while (!(sum>>k & 1)) k++;
int first=0;
for (auto x : nums) {
if (x>>k & 1) {
first^=x;
}
}
int second=sum^first;
return {first,second};
}
};