编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int query(int a[], int size){
	for (int i = 1; i < size;++i){
		a[0] = a[0] ^ a[i];
	}
	return a[0];
}
//随便在数组中找出一个元素,然后依次异或。其中有出现偶次数的整数全部会相互抵消。例如:
//a=a^b^b
//c=a^b^b^a^c
//根据这个原则我们可以很容易的求出里面出现奇次数的数字。
int main(){
	int a[] = { 1, 1, 3, 3, 4, 5, 5, 6, 6 };
	int size = sizeof(a) / sizeof(a[0]);
	int b = query(a,size);
	printf("%d", b);
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43692920/article/details/85226560