编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)
编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)
思路:
1 2 3 5 3 1 2
1 -------> 0 0 0 1
2 -------> 0 0 0 1
3 --------> 0 0 1 1
5------------>0 1 0 1
3 -------> 0 0 1 1
1 --------> 0 0 0 1
2 --------> 0 0 1 0
0 1 0 1
异或运算: 对应位置1的个数为奇数,最终对应结果为1
对应位置1的个数为偶数,最终对应结果为0
#include<stdio.h>
#include<stdlib.h>
int main(){
int a[] = { 1, 5, 7, 3, 2, 1, 3, 2, 5 };
int len = sizeof(a) / sizeof(a[0]);
int i = 0;
int ret = 0;
for (i = 0; i < len; ++i){
ret ^= a[i];
}
printf("%d\n", ret);
system("pause");
return 0;
}