//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
/*
//offer算法解
public class Solution {
    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
       int differNumFirst=0;
        //对原数组进行异或运算
        for(int i=0;i<array.length;i++){
            differNumFirst=differNumFirst^array[i];
        }
        //判断异或结果中从左至右第一个出现1的位置
        int index=1;
        while((index&differNumFirst)==0){
            index=index<<1;
        }
        int resultOfOne=0;
        int resultOfTwo=0;
        for(int i=0;i<array.length;i++){
            //判断与index中第一个“1”的位置相同的数
            if((index&array[i])==0){
                resultOfOne=resultOfOne^array[i];
            }else{
                resultOfTwo=resultOfTwo^array[i];
            }
        }
        num1[0]=resultOfOne;
        num2[0]=resultOfTwo;
    }
}
*/

//利用hashMap解
import java.util.HashMap;
public class Solution {
    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
        HashMap<Integer,Integer> hash=new HashMap<Integer,Integer>();
        for(int i=0;i<array.length;i++){
            if(hash.containsKey(array[i])){
                hash.put(array[i],2);
            }else{
                hash.put(array[i],1);
            }
        }
        //寻找第一个
       for(int i=0;i<array.length;i++){
           //hashmap的get()返回指定的value
           if(hash.get(array[i])==1){
               num1[0]=array[i];
               hash.put(array[i],0);
                   break;
           }
       }
        //寻找第二个
           for(int i=0;i<array.length;i++){
           if(hash.get(array[i])==1){
               num2[0]=array[i];
               hash.put(array[i],0);
                   break;
           }
}
    }
}