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;}
}