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]; } } }
There are two numbers in an array that appear once and all other numbers appear twice, find these two numbers
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=324441254&siteId=291194637
Ranking