思想:
采用异或的方法,首先我们先来说一下异或运算,一个数连续两次异或用一个数还是它本身,比如:6(0110)^4(0100)=2(0010) ; 2(0010)^4(0100)=6(0110). 我们可以利用异或这一特性,只要数组中成对出现那么他们就会抵消,最后输出的值就是单出来的。
int find_data(int a[], int size)
{
int i = 1;
int data = a[0];
for (; i < size; i++)
{
data ^= a[i];
}
return data;
}
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1 };
int size = sizeof(a) / sizeof(a[0]);
int ret=find_data(a, size);
printf("%d\n",ret);
system("pause");
return 0;
}
程序运行结果: