题目是:一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。
#include<stdio.h>
int find_num(int arr[], int sz)
{
int i = 0;
int ret = 0;
for(i=0; i<sz; i++)
{
ret ^= arr[i];
}
return ret;
}
int main()
{
int arr[] = {1,3,5,1,3,5,4};
int sz = sizeof(arr)/sizeof(arr[0]);
int ret = find_num(arr, sz);
printf("%d\n", ret);
}
总结:0异或数字A,结果还是数字A,最后相当于0在异或ret,所以最后ret里面保存了这个数字。