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