题解分析:一个数组中数字都是成对出现的,找出只出现一个的数字,此时有两个条件,成对出现 以及一个只出现一次,很显然从成对出现这个条件下手会简单很多,在此之前引进一个位运算符号^(按位异或), a^b相同位为0,相异为1 注:(a ^ a = 0 a ^ 0 = a)
举例:{a, b, c, d, a, b, c} d只出现了一次
a ^ b ^ c ^ b = a^c
1 ^ 2 ^3 ^ 2 = 1 ^ 3
执行代码:
//数组中有:1 2 3 4 5 1 2 3 4,只有5出现一次,其他数字都出现2次,找出5
#include <stdio.h>
int main()
{
int a[] = { 1,2,3,4,5,1,2,3,4 };
int sz = sizeof(a) / sizeof(a[0]); //数组的大小
int med = 0; //记录出现一次的数字
for (int i = 0; i < sz; i++) //遍历数组
{
med ^= a[i];
}
printf("%d", med);
}
(今天分享就到这里,感谢支持,有啥问题欢迎评论区留言,大家一起探讨!!!)