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

经验分享 程序员 微信小程序 职场和发展