【剑指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掌握的不够熟练。大家可以稍微对其进行改进。