1. 程式人生 > 實用技巧 >349. [雜湊表]兩個陣列的交集

349. [雜湊表]兩個陣列的交集

349. 兩個陣列的交集

方法一:雜湊表

將給定的兩個陣列內元素轉換用雜湊表儲存,再利用雜湊表特性,利用contains判斷元素是否存在相交即可。

// 執行耗時:3 ms,擊敗了95.82% 的Java使用者
// 記憶體消耗:38.3 MB,擊敗了97.86% 的Java使用者

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> set1 = new HashSet<>();
        HashSet<Integer> set2 = new HashSet<>();
        for (int n1 : nums1) {
            set1.add(n1);
        }
        for (int n2 : nums2) {
            set2.add(n2);
        }
        return getIntersection(set1, set2);
    }

    public int[] getIntersection(HashSet<Integer> set1, HashSet<Integer> set2){
        if(set1.size() > set2.size()){
            return getIntersection(set2, set1);
        }
        HashSet<Integer> intersectionSet = new HashSet<>();
        for (int i : set1){
            if (set2.contains(i)){
                intersectionSet.add(i);
            }
        }
        int[] res = new int[intersectionSet.size()];
        int index = 0;
        for(int num : intersectionSet){
            res[index++] = num;
        }
        return res;
    }
}