一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。
请找出这个数字。(使用位运算)
分析:异或(a^a=0,任何数和0异或等于其本身)
int Findnum(int a[],int num)
{
int i = 0;
int result=0;
for (i = 0; i < num; i++)
{
result ^= a[i];
}
return result;
}
int main()
{
int a[] = { 12, 13, 15, 13, 12 };
int num = sizeof(a) / sizeof(a[0]);
int result=Findnum(a, num);
printf("%d\n", result);
system("pause");
return 0;
}
博客提出一组数据中只有一个数字出现一次,其他数字成对出现,需找出该数字,采用位运算的方法,利用异或运算特性,即a^a = 0,任何数和0异或等于其本身来解决问题。

被折叠的 条评论
为什么被折叠?



