//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;
        }
    }*/
    }
}