1. 程式人生 > >陣列中有兩個出現一次的數字,其他數字都出現兩次,找出這兩個數字

陣列中有兩個出現一次的數字,其他數字都出現兩次,找出這兩個數字

 public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
        int length=array.length;
        if(length==2){
            num1[0]=array[0];
            num2[1]=array[1];
        }
        int bitres=0;
        for(int i=0;i<array.length;i++){
            bitres^=array[i];
        }
        int index=0;
        while ((bitres&1)==0 && index<32){
            bitres>>=1;
            index++;
        }
        for(int i=0;i<length;i++){
            if(((array[i]>>index)&1)==1){
                num1[0]^=array[i];
            }else {
                num2[0]^=array[i];
            }
        }
    }