思路:http://blog.youkuaiyun.com/morewindows/article/details/8214003
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
if(data.size()<=2||!num1||!num2) return;
int temp=0;
int len =data.size();
//得到异或值
for(int i=0;i<len;i++)
temp^=data[i];
if(temp==0) return;
//找到位置
int j;
*num1=0;*num2=0;
for(j=0;j<sizeof(int)*8;j++)
if((temp>>j)&1) break;
// 分两组异或
for(int i=0;i<len;i++)
if((data[i]>>j)&1)
*num1^=data[i];
else
*num2^=data[i];
}
};