349. 两个数组的交集
哈希表(set)
思路
进阶
- 何时用哈希表?
(1)判断一个元素是否在一个集合中。(2)判断一个元素是否在一个集合中出现过。 - 用哈希表的哪一种数据结构(数组、set、map)?
- 数组、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;
}
}