//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
import java.util.*;
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
int index=1;
int xor=0;
for(int i=0;i<array.length;i++){
xor=xor^array[i];
}
//找到第一位不同的位置
while((index & xor)==0)
index = index << 1;
int nums1=0,nums2=0;
for(int i=0;i<array.length;i++){
if((array[i]&index)==0)nums1=nums1^array[i];
else nums2=nums2^array[i];
}
num1[0]=nums1;
num2[0]=nums2;
//Hash Map 方法list remove 指定下标处的值,注意要同时缩减删除的下标,否则容易出错
/*
if(array.length==0||array==null)return;
else{
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i=0;i<array.length;i++){
if(!map.containsKey(array[i]))
map.put(array[i],1);
else map.put(array[i],2);
}
boolean flag=true;
for(int key:map.keySet()){
if(map.get(key)==1 && flag)
{
num1[0]=key;
flag=false;
}
if(map.get(key)==1 && flag==false)
num2[0]=key;
}
}*/
}
}