数组与哈希简单1 种解法
#349两个数组的交集
返回两个数组共有的不同元素,结果顺序任意。
#数组#哈希集合
解题主线
01
第一个集合支持 O(1) 期望成员判断,第二个集合负责结果去重。
解法 1:双哈希集合
先收集 nums1 的不同值,再扫描 nums2,把命中值加入结果集合。
时间复杂度
O(n + m) 期望
空间复杂度
O(n + min(n, m))
java
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