1. 程式人生 > >中金所面試題目之找出只出現一次數字

中金所面試題目之找出只出現一次數字

題目:n個int型數字,兩兩重複,只有一個是出現一次,找出它。

思路:^位異或操作,具有如下性質:1.交換律與結合律。2.自己與自己異或是0。3.自己與0異或是自己

程式碼:

#include <iostream>
using namespace std;
void main()
{
	int a[5] = {1,2,3,1,2};
	int single_number = 0;
	int N = sizeof(a)/sizeof(a[0]);//sizeof()返回的是陣列所佔記憶體的位元組數目
	for (int i = 0; i < N; i++)
		single_number ^= a[i];
	cout<<single_number;
	getchar();
}
注意:c++在求取陣列的長度時,sizeof(a)返回的是20,即陣列所佔記憶體的位元組數目。 感謝博文大神博文