1. 程式人生 > >求陣列中只出現一次的兩個數

求陣列中只出現一次的兩個數

#include<stdio.h>
#include<iostream>
using namespace std;
void getonce(int a[],int n){
    int result=0,count=1;
    for (int i = 0; i < n; i++){
        result ^= a[i];
    }
    if(result == 0){
        cout<<"數組裡沒有隻出現一次的元素"<<endl;
        return ;
    }
    cout<<"result="
<<result<<endl; //測試所有的異或結果 while(result != 0){ if(result&&1==1) //找出第一次出現1的位數 break; else{ result >>= 1; count <<=1; } } cout<<"count="<<count<<endl;//測試從低位到高位第一次出現1的位數 int first=0
; int second=0; for (int j = 0; j < n; j++){ if ((a[j]&count) == 0){ first ^=a[j]; cout<<"firstgroup="<<a[j]<<" "; //測試第一組的結果 } else{ second ^=a[j]; cout<<"secondgroup="<<a[j]<<" ";//測試第二組的結果
} } cout<<endl; if(((first|0) != 0)&&(second|0 != 0)){ cout<<"first="<<first<<endl; cout<<"second="<<second<<endl; } else if((first|0) != 0){ cout<<"陣列只有一個元素不同"<<endl; cout<<first<<endl; } else{ cout<<"陣列只有一個元素不同"<<endl; cout<<second<<endl; } } int main(){ int a[]={23,23,23,78,23,78}; int b[]={1,1,4,1,1,1}; getonce(a,6); getonce(b,6); // 測試結構為 1,4,不知道為啥?歡迎指正。 return 0; }