问题: 编程实现:
一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。(使用位运算)
思路: 秘诀在于异或运算,
例如:1,2,2三个数
01^10 => 11
11^10 => 01
我们可以看出最终结果为没有重复的数字1.
实现代码:
#include<stdio.h>
#include<stdlib.h>
int main() {
int arr[] = { 2,10,4,2,13,7,4,10,7 };
int size = sizeof(arr) / sizeof(arr[0]);
for (int i = 1; i < size; ++i) {
arr[0] = arr[0] ^ arr[i];
}
printf("只出现一次的数字是%d\n", arr[0]);
system("pause");
return 0;
}
运行结果: