1547. 奇数统计(count)

1547. 奇数统计(count)

题目描述
给出N个正整数,其中只有一个数出现了奇数次,其余的数都出现偶数次。
求那个出现了奇数次的数。1<=N<=500000,N肯定是奇数。所有出现数都不超过10000。

输入
第一行是N,下一行有N个正整数。

输出
出现了奇数次的数。

样例输入
​【样例输入1】

9
3 1 2 2 17 1 3 17 3

【样例输入2】

5
12 13 14 13 12

样例输出
【样例输出1】

3

【样例输出2】

14

方法一(桶排):

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
using namespace std;
const int MAX=2147483647;
const int N=1e6;
int f[5000100],n,a;
int main()
{
	fre(count);
	scanf("%d",&n);
	for(int i=1;i<=n;i++) 
		scanf("%d",&a),f[a]++;
	for(int i=1;i<=5000000;i++)
		if(f[i]%2) 
			{printf("%d",i);return 0;}
	return 0;
}

方法二(异或):
相同的数进行异或后为零。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
using namespace std;
const int MAX=2147483647;
const int N=1e6;
int n,a,b;
int main()
{
	//fre(count);
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a),b^=a;
	printf("%d",b);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/bigwinner888/article/details/107140350