题目描述
一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
输入描述
[1,4,1,6]
输出描述
[4,6]
解题思路
利用Map记录数组中的数据出现了对少次,利用Map.Entry < , >来遍历Map,输出只出现一次的数即可
代码如下
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] FindNumsAppearOnce (int[] array) {
// write code here
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0;i <array.length;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<>();
for(Map.Entry<Integer,Integer> entry:map.entrySet()){
int key = entry.getKey();
int val = entry.getValue();
if(val == 1){
list.add(key);
}
}
int[] ret = new int[list.size()];
for(int i = 0;i < list.size();i++){
ret[i] = list.get(i);
}
return ret;
}
}