【剑指Offer】找出数组中只出现过一次的数字--java
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 解析:诸如此类多少次的题目,基本上都可以用来HashMap做。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] FindNumsAppearOnce (int[] array) {
// write code here
HashMap<Integer,Integer> map=new HashMap<>();
for (int i=0;i<array.length;i++){
if(!map.keySet().contains(array[i])){
map.put(array[i],1);
}else{
map.remove(array[i],1);
}
}
int[] arry=new int[2];
LinkedList<Integer> list=new LinkedList<>();
for(Integer key:map.keySet()){
Integer value=key;
list.add(value);
}
arry[0]=list.get(0);
arry[1]=list.get(1);
return arry;
}
}
虽然AC了,但是有点复杂,这里我用到了链表,原因是对hashMap掌握的不够熟练。大家可以稍微对其进行改进。
