- class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
int size=data.size();
if(size<2)return;
int result=data[0];
for(int i=1;i<size;i++){
result=result^data[i];
}
int n=0;
while(!(result&0x01)){
result=result>>1;
n++;
if(n>32)return;
}
int mask=0x01<<n;
*num1=0;*num2=0;
for(int i=0;i<size;i++){
if(data[i]&mask)
*num1^=data[i];
else
*num2^=data[i];
}
}
};
原文:http://www.cnblogs.com/zhxshseu/p/5285004.html