#include <iostream>
using namespace std;
const int maxn = 100;
int a[maxn];
void findNumberAppearOnce(int* data, int length, int* num1, int*num2)
{
if(data == NULL || length<2) return;
int resultExclusiveOR = 0;
for(int i=0;i<length;i++)
resultExclusiveOR^=data[i];
int firstBit = resultExclusiveOR&(-resultExclusiveOR);//劃分子數組的依據
*num1 = 0;*num2=0;
for(int i=0;i<length;i++)
{
if((data[i]&firstBit)==0)
*num1^=data[i];
else
*num2^=data[i];
}
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int x,y;
findNumberAppearOnce(a,n,&x,&y);
cout<<x<<" "<<y<<endl;
return 0;
}
面試題40(數組中出現一次的數字)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.