陣列中有兩個出現一次的數字,其他數字都出現兩次,找出這兩個數字
阿新 • • 發佈:2018-12-30
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]; } } }