思路:
依次對數組中每一個數字做異或運算,得到結果後,看倒數第幾位爲1
根據倒數第幾位爲1,將數組分爲兩組,分別對兩個數組異或
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(array==null)
return;
int number=array[0];
for(int i=1;i<array.length;i++)
{
number^=array[i];
}
int index=0;
while((number&1)==0)
{
number=number>>1;
index++;
}
for(int i=0;i<array.length;i++)
{
boolean isBit=((array[i]>>index)&1)==0;
if(isBit)
{
num1[0]^=array[i];
}
else
{
num2[0]^=array[i];
}
}
}
}