数组与哈希简单1 种解法

#349两个数组的交集

返回两个数组共有的不同元素,结果顺序任意。

#数组#哈希集合

解题主线

01

第一个集合支持 O(1) 期望成员判断,第二个集合负责结果去重。

解法 1双哈希集合

先收集 nums1 的不同值,再扫描 nums2,把命中值加入结果集合。

时间复杂度

O(n + m) 期望

空间复杂度

O(n + min(n, m))

349. 两个数组的交集 · 双哈希集合
import java.util.HashSet;
import java.util.Set;

final class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> first = new HashSet<>();
        for (int value : nums1) first.add(value);
        Set<Integer> common = new HashSet<>();
        for (int value : nums2) {
            if (first.contains(value)) common.add(value);
        }
        int[] result = new int[common.size()];
        int index = 0;
        for (int value : common) result[index++] = value;
        return result;
    }
}

先收集 nums1 的不同值,再扫描 nums2,把命中值加入结果集合。

边界与易错点

  • 交集要求每个值只出现一次,不能直接按第二个数组的命中次数输出。
  • 同文件的 isAnagram3 已归并到 242,不属于本题。
整理来源

由旧仓库源码复核、去重并整理;展示代码已按 Java 21 语义修正明显问题。

easy/Q349_intersection.java