• 力扣 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())
  • 相关阅读:
    jqmodal遮罩层的实现
    让Editplus和SVN集成
    asp.net很有用的字符串操作类
    TCP socket编程
    Adroid: ProgressBar 的使用
    在想的事情......
    I'm new to CNBlogs!
    压力
    开心工作
    feature
  • 原文地址:https://www.cnblogs.com/catyuang/p/15315073.html
Copyright © 2020-2023  润新知