题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
解题思路
将数值放入hashmap,键为数字,值为数字的个数,然后遍历hashmap 找到值为1的。
代码实现
import java.util.ArrayList;
import java.util.HashMap;
//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(array==null || array.length==0){
return ;
}
int len=array.length;
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<len;i++){
if(map.containsKey(array[i])){
map.put(array[i],map.get(array[i])+1);
}else{
map.put(array[i],1);
}
}
ArrayList<Integer> list=new ArrayList<Integer>();
for(int i=0;i<len;i++){
if(map.get(array[i])==1){
list.add(array[i]);
}if(list.size()==2){
continue;
}
}
num1[0]=list.get(0);
num2[0]=list.get(1);
}
}