HashSet-HashMap-面試題56 - I. 數組中數字出現的次數

解題思路:

最直接的方法,統計每個數出現的次數。使用 HashMap 或者 HashSet,由於每個數字最多出現兩次,我們可以使用 HashSet。

遍歷數組,遇到的數如果 HashSet 中存在,就把這個數刪除。如果不存在,就把它加入到 HashSet 中。最後 HashSet 中剩下的兩個數就是我們要找的了。

HashSet:

class Solution {
    public int[] singleNumbers(int[] nums) {
        HashSet<Integer>set=new HashSet<>();
        for(int i:nums){
            if(set.contains(i))
                set.remove(i);
            else set.add(i);    
        }
        int []res=new int[2];
        int i=0;
        for(int n:set){
            res[i]=n;
            i++;
        }
        return res;
    }
}

 HashMap:

class Solution {
    public int[] singleNumbers(int[] nums) {
        HashMap<Integer,Integer> map=new HashMap<>();
        for(int i:nums){
            if(map.containsKey(i)) 
                map.put(i,map.get(i)+1);
            else map.put(i,1);    
        }
        int []res=new int[2];
        int i=0;
        for(int n:nums){
            if(map.get(n)==1)
                res[i++]=n;
        }
        return res;
    }
}

參考博客鏈接:

https://leetcode-cn.com/problems/single-number-iii/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by-5-8/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章