数组中只出现一次的数字

来源:互联网 发布:迈视高清网络摄像机 编辑:程序博客网 时间:2024/06/06 02:36

1、数组中只出现一次的数字


#include<iostream>using namespace std;int findFirstBitIs1(int num){    int index = 0;    while(  ((num & 1)==0)  && (index<8*sizeof(int))  )    {        num = num>>1;        index++;    }    return index;}int isBit1(int num,int index){    num  = num>>index;    return (num&1);}void findNumAppareOnce(int data[],int len, int *num1, int *num2){    if(data==NULL||len<2)        return;    int num = 0;    for(int i = 0; i<len; i++)    {        num ^=data[i];    }    int indexOf1 = findFirstBitIs1(num);    *num1 = *num2 = 0;    for(int j = 0; j<len; j++)    {        if(isBit1(data[j],indexOf1))        {            *num1 ^= data[j];        }        else        {            *num2 ^=data[j];        }    }}int main(){    int data[] = {2,4,3,6,3,2,5,5};    int num1,num2;    findNumAppareOnce(data,8,&num1,&num2);    printf("%d  %d\n",num1,num2);    return 0;}


0 0
原创粉丝点击