用位运算找出单身数字
作者:互联网
一组数据中只有两个数字出现了一次。其他所有数字都是成对出现的。
请找出这个数字
#include<stdio.h>
#include<stdlib.h>
int main() {
int arr[] = { 1, 5, 2, 3, 4, 1, 6, 3, 4, 2 };
int i;
int sum = 0;
int pos;
for (i = 0; i < 10; i++)
{
sum ^= arr[i];
}
for (i = 0; i < 32; i++) {
if (sum & 1 << i) {
pos = i;
break;
}
}
int num1 = 0, num2 = 0;
for (i = 0; i < 10; i++) {
if (arr[i] & 1 << pos) {
num1 ^= arr[i];
}
else {
num2 ^= arr[i];
}
}
printf("%d %d", num1, num2);
system("pause");
return 0;
}
标签:arr,数字,int,sum,++,单身,用位,include,运算 来源: https://blog.csdn.net/qq_43735092/article/details/89459164