思路:
依次对数组中每一个数字做异或运算,得到结果后,看倒数第几位为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];
}
}
}
}