class Solution {
public:
vector<int> findNumsAppearOnce(vector<int>& nums) {
//亦或运算,两个相同的数亦或为1,将所有数亦或后,得到sum的结果,找到sum中第一个出现的
//1的下标,对每个该下标为1的数进行亦或,就得到第一个数,将sum与第一个数亦或就得到
//第二个数
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;
return vector<int>{first,sum ^ first};
}
};