class Solution {
public:
vector<int> findNumsAppearOnce(vector<int>& nums) {
//利用异或运算的规则,因为除了特定2个数外都相同,所以其余数在亦或运算后都将变成0,只有
//两个不相同的数变为1,找到第一个1的位置,将所有该位为1的数亦或一遍就得到该数,最后将
//得到的数first与sum亦或,就得到第二个数
int sum = 0;//x^y
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}; //注意是大括号
}
};