题目链接
两个数组的交集 II
题目描述
注意点
- 返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)
- 可以不考虑输出结果的顺序
解答思路
- 使用哈希表存储nums1中的元素及出现次数(同一个元素在两个数组中都出现多次结果集中也需要加入多次该元素),随后根据哈希表中未判断相交元素数量判断nums2中某个元素是否还能nums1中的元素相交
代码
class Solution {public int[] intersect(int[] nums1, int[] nums2) {Map<Integer, Integer> map = new HashMap<>();for (int num : nums1) {map.put(num, map.getOrDefault(num, 0) + 1);}List<Integer> list = new ArrayList<>();for (int num : nums2) {if (map.get(num) != null && map.get(num) > 0) {list.add(num);map.put(num, map.get(num) - 1);}}int[] res = new int[list.size()];for (int i = 0; i < list.size(); i++) {res[i] = list.get(i);}return res;}
}
关键点
- 无