class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
int res=0,rec=0,k=0;
for(auto p:nums) res^=p;//res存储的是此时两个单独的数的异或值;
while(!(res>>k&1))k++;//先找到res第一个1在第几位;然后再从nums找该位为1的所有数异或起来
for(auto p:nums)
if(p>>k&1)rec^=p;//此时rec存储的是第k位是1的其中一个单身狗,然后和res异或就可以获得另一个单身狗的值~
return vector<int>({rec,res^rec});
}
};