Loading

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;
    }
}
posted @ 2020-11-03 22:18  上海井盖王  阅读(99)  评论(0)    收藏  举报