void FindTwoDiff(int a[], int n, int N1, int N2)
{
int i, j, temp;
temp = 0;
for (i = 0; i < n; i++)
temp ^= a[i]; //此时temp为2个不同数的异或值
//找第一个为1的位
for (j = 0; j < sizeof(int) * 8; j++)
if (((temp >> j) & 1) == 1)
break;
//分两组
N1 = N2 = 0;
for (i = 0; i < n; i++)
if (((a[i] >> j) & 1) == 0)
N1 ^= a[i];
else
N2 ^= a[i];
}
笔试题6——数组中2个出现一次的数(其他2次)
最新推荐文章于 2024-03-08 14:05:30 发布