面试题40(数组中出现一次的数字)

来源:互联网 发布:杨枝甘露网络笑话 编辑:程序博客网 时间:2024/06/02 04:23
#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;}

0 0
原创粉丝点击