力扣 350. 两个数组的交集 II (难度:简单)

题目:给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]

说明:

  • 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
  • 我们可以不考虑输出结果的顺序。

解答:

  • 起初想的方法是用两个哈希表,看了官方题解,学到了,可以只用一个哈希表

 

 1 class Solution:
 2     def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
 3         if len(nums1) > len(nums2):
 4             return self.intersect(nums2, nums1)
 5 
 6         cnt = collections.Counter(nums1)
 7 
 8         result = []
 9         for num in nums2:
10             if cnt.get(num, -1) > 0:
11                 result.append(num)
12                 cnt[num] -= 1
13 
14         return result
  • 更加 pythonic 的解法,Python 大法好!
1 class Solution:
2     def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
3         cnt1 = collections.Counter(nums1)
4         cnt2 = collections.Counter(nums2)
5         result = cnt1 & cnt2
6         return list(result.elements())

 

posted @ 2021-09-20 20:04  catyuang  阅读(35)  评论(0编辑  收藏  举报