349. 两个数组的交集

349. 两个数组的交集

哈希表(set)

思路
进阶

  1. 何时用哈希表?
    (1)判断一个元素是否在一个集合中。(2)判断一个元素是否在一个集合中出现过。
  2. 用哈希表的哪一种数据结构(数组、set、map)?
  3. 数组、set、map的区别?
import java.util.Set;
import java.util.HashSet;

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        // 空数组或者0个元素的数组,直接返回空集
        if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) {
            return new int[0];
        }

        // nums1 映射到哈希表(set) set1 中,交集元素存储到哈希表 resSet 中
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> resSet = new HashSet<>();

        for (int i : nums1) { // nums1 中的元素添加到 set1 中并去重
            set1.add(i); 
        }
        for (int i = 0; i < nums2.length; i++) { // 若 nums2 中元素在 set1 中,将改元素添加到 resSet中
            if (set1.contains(nums2[i])) {
                resSet.add(nums2[i]);
            }
        }

        // 将 resSet 转换为数组
        int[] res = new int[resSet.size()];
        int j = 0;
        for (int i : resSet) {
            res[j++] = i;
        }

        return res;
    }
}

哈希表(数组)

posted @ 2025-10-18 14:21  Nickey103  阅读(1)  评论(0)    收藏  举报