1. 程式人生 > >程式設計實現: 一組資料中只有一個數字出現了一次。其他所有數字都是成對出現的。 請找出這個數字。

程式設計實現: 一組資料中只有一個數字出現了一次。其他所有數字都是成對出現的。 請找出這個數字。

#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;
}