题目:
给定两个数组,写一个方法来计算它们的交集。
例如:
给定 nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, 返回 [2, 2]
.
注意:
- 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
- 我们可以不考虑输出结果的顺序。
思路:
将两个数组分别用字典存起来,那么查询操作只耗费O(1)时间,这是哈希表的应用。
代码:
class Solution(object):
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
ans = []
A, B = nums1, nums2
m, n = len(nums1),len(nums2)
if m > n : A, B, m, n = B, A, n, m
set_A, set_B = {},{}
for each in A:
if each not in set_A:
set_A[each] = 0
set_A[each] += 1
for each in B:
if each not in set_B:
set_B[each] = 0
set_B[each] += 1
for key in set_A.keys():
if key in set_B:
for i in range(min(set_A[key],set_B[key])):
ans.append(key)
return ans