一个数组中只有两个数字是出现一次,
其他所有数字都出现了两次。
找出这两个数字,编程实现。
#include<stdio.h>
#include<stdlib.h>
int main() {
int arr[] = { 1,2,3,4,10,12,4,3,2,1 };
int n = sizeof(arr) / sizeof(arr[0]);
int i,pos;
int sum = 0;
int num1 = 0;
int num2 = 0;
for (i = 0;i < n;i++) {
sum = sum ^ arr[i];
}
for (i = 0;i < 32;i++) {
if (sum & (1 << i)) {
pos = i;
break;
}
}
for (i = 0;i < n;i++) {
if (arr[i] & (1 << pos)) {
num1 = num1 ^ arr[i];
}
else {
num2 = num2 ^ arr[i];
}
}
printf("%d %d\n", num1, num2);
system("pause");
return 0;
}