题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。
class Solution {
public:
void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
int temp=0;
for(auto item:data)
temp ^= item; //元素异或结果
temp = (temp&(-temp)); //异或结果最右边的1的位置为temp
*num1 = 0;
*num2 = 0;
for(auto item:data)
{
int flag = (temp^item)&(-(temp^item));
if(flag == temp) //将元素分为二侧,根据元素的temp位置是否为1
*num1 ^= item;
else
*num2 ^= item;
}
}
};