🌗 349. 两个数组的交集

吞佛童子2022年6月9日
  • algorithm
  • hash
小于 1 分钟

🌗 349. 两个数组的交集

难度: 🌗

问题描述

img_9.png


解法

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        // 思路:
        // 遍历小数组,存放 set
        // 遍历大数组,查看是否包含
        int m = nums1.length;
        int n = nums2.length;
        List<Integer> res = new ArrayList<>();
        HashSet<Integer> set = new HashSet<>();
        if(m <= n) {
            for(int i : nums1) {
                set.add(i);
            }
            for(int j : nums2) {
                if(set.contains(j)) {
                    res.add(j);
                    set.remove(j);
                    if(set.isEmpty()) {
                        return getRes(res);
                    }
                }
            }
        } else {
            for(int i : nums2) {
                set.add(i);
            }
            for(int j : nums1) {
                if(set.contains(j)) {
                    res.add(j);
                    set.remove(j);
                    if(set.isEmpty()) {
                        return getRes(res);
                    }
                }
            }
        }
        return getRes(res);
    }

    private int[] getRes(List<Integer> res) {
        int len = res.size();
        int index = 0;
        int[] ans = new int[len];
        for(int i : res) {
            ans[index] = i;
            index ++;
        }
        return ans;
    }
}

输出

img_8.png

上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou