在一个数组中除两个数字只出现1次外,其它数字都出现了2次, 要求尽快找出这两个数字。
#include <iostream>
using namespace std;
void fun(int a[], int n)
{
int temp = 0;
for (int i = 0; i < n; i++)
{
temp ^= a[i];
}
int bitFactor = 1;
while (true)
{
if (temp & bitFactor)
{
break;
}
bitFactor <<= 1;
}
int result1 = 0;
int result2 = 0;
for (int i = 0; i < n; i++)
{
if (a[i] & bitFactor)
{
result1 ^= a[i];
}
else
{
result2 ^= a[i];
}
}
cout << result1 << " " << result2 << endl;
}