1.题目
现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。
数据范围:1<=n<=200 0000
例:arr[5]={1,2,3,2,1} 输出:3
arr[1]={1} 输出:1
2.题目解析
此题中给的数据相对较多,且数值并不确定,我们没法创建新的数组,来存放个数。
我们需要明白:1^1=0;
1^0=1;
相同的两个数异或,则它的值0;
最后剩下出现奇数次的数字无法于其他数组异或成0,最终的结果就是所需要的值。
3.代码
#include<stdio.h>
int main()
{
int arr=0;
int ret=0;
int n=0;
int i=0;
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d",&arr);
ret ^=arr;
}
printf("%d",ret);
return 0;
}
*注:这里我们并不需要存放数值,直接使用即可。
4.总结
希望大家多多点赞,你的关注是我创作的动力!!

本文介绍了一种高效算法,用于从大量数据中找到唯一出现奇数次的元素。通过使用异或运算,避免了额外的空间开销,适用于大规模数据处理。
7727

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



