1.15.1一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现。

本文介绍了一种使用XOR运算符解决数组中重复元素问题的算法。通过两次XOR操作,可以找出数组中出现两次的两个不同整数。首先,将数组中所有元素进行XOR得到一个结果;然后,找到该结果中任意一个为1的位作为分组依据,再次对数组元素进行XOR,最终得到两个重复的整数。

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

#include<stdio.h>
#include<stdlib.h>
#define  SIZEE(a) (sizeof(a)/sizeof(a[0]))
int main() {
	int a[] = { 8,10,8,2,11,9,12,11,9,2 };
	int i, sum=0;
	int pos;
	int num1=0, num2=0;
	for (i = 0; i < SIZEE(a); ++i) {
		sum ^= a[i];
	}
	for (i = 0; i < 32; ++i) {
		if (sum & 1 << i) {
			pos = i;
			break;
		}
	}
	for (i = 0; i < SIZEE(a); ++i) {
		if (a[i] & 1 << pos) {
			num1 ^= a[i];
		}
		else {
			num2 ^= a[i];
		}
	}
	printf("%d %d", num1, num2);
	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值