There are two numbers in an array that appear once and all other numbers appear twice, find these two numbers

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];
            }
        }
    }

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324441254&siteId=291194637