一組數據中只有一個數字出現了一次,其他所有數字都是成對出現的。


題目描述:

一組數據中只有一個數字出現了一次。其他所有數字都是成對出現的。
請找出這個數字。(使用位運算)

分析思路:

要求找出一組書中只出現一次的數字,我們想到異或運算的一個性質:任何一個數字異或它自己都等於0,也就是說,如果從頭到尾依次異或數組中的每一個數字,那么最終結果剛好是出現一次的那個數,因為那些成對出現的都在異或中抵消了。

代碼如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int arr[]={1,2,3,4,5,3,2,1,5};
    int i=0;
    int ret=0;
    int len=sizeof(arr)/sizeof(arr[0]);
    for(i=0;i<len;i++)//打印出數組
    {
        printf(" %d " ,arr[i]);
    }
    printf("\n");
    for(i=0;i<len;i++)//依次異或抵消掉成對出現的
    {
    ret^=arr[i];
    }
    printf("出現一次的數為:>%d\n",ret);
    system("pause");
    return 0;
}

運行結果
這里寫圖片描述


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com