数组中只出现一次的数

数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法找到x


#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int findnumber(int a[],int n)
{
	int bits[32];
	int i,j;
	memset(bits,0,sizeof(bits));
	for (int i=0;i<n;i++)
	{
		for (int j=0;j<32;j++)
		{
			bits[j]+=((a[i]>>j)&1);
		}
	}
	int result=0;
	for(j=0;j<32;j++)
	{
		if (bits[j]%3!=0)
		{
			result+=(1<<j);
		}
	}
	return result;
}
int main()
{
	const int MAXN=10;
	int a[MAXN]={2, 3, 1, 2, 3, 4, 1, 2, 3, 1};
	cout<<findnumber(a,MAXN)<<endl;
	system("pause");
	return 1;
}


阅读更多
个人分类: 算法
想对作者说点什么? 我来说一句

找出只出现一次的数字

2015年08月19日 1KB 下载

没有更多推荐了,返回首页

不良信息举报

数组中只出现一次的数

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭