数组中所有数都出现了3次,除了其中一个数,找出这个数

本文介绍了一种高效算法,用于从数组中找出仅出现一次的数字,其余数字均出现三次。通过构建32位计数数组,记录每位上1出现的次数并进行模3运算,最终组合成目标数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:数组中所有的数字都出现了3次,除了其中一个,找出这个数
创建一个count[32]数组,存放1出现的次数,如果是3的倍数,就不是要找的数,忽略,最后把这些数取出就是要找的数。
(如果这个数出现了2次,结果要除2)。

int Find(int a[],int n)
{
	int count[32]={0};
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<32;j++)
		{
			count[j]+=(a[i]>>j)&1;
			count[j]%=3;
		}
	}
	int result=0;
	for(i=0;i<32;i++)
	{
		result+=(count[i]<<i);
	}
	return result;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值