两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集。
说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。
解题思路
方法一:哈希表
1、选择用哈希表存储每个数字出现的次数。
原因:同一个数字在两个数组中都可能出现多次,但我们最终选择该数字在交集中出现的次数为该数字在两个数组中出现次数的最小值。
2、具体步骤:
(1)、选择两个数组中长度较小的为第一个数组进行哈希映射。
(2)、遍历第一个数组,并在哈希表中记录第一个数组中的每个数字以及对应出现的次数。
(3)、遍历第二个数组,对第二个数组中的每个数字进行判断。如果在哈希表中存在这个数字,则将该数字添加到答案,并减少哈希表中该数字出现的次数。若不在即跳过。
3、图解(来源力扣):
遍历第二个数组时,与hashmap中的数相比较,如果遇到相同的数,hashmap中该数的计数个数-1.并将该数放到结果中。
代码
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]: