题目

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

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

示例 2:

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

说明:

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

答案

#
# @lc app=leetcode.cn id=350 lang=python3
#
# [350] 两个数组的交集 II
#


# @lc code=start
class Solution:
    def intersect(self, nums1, nums2):
        inter = set(nums1) & set(nums2)
        l = []
        for i in inter:
            l += [i] * min(nums1.count(i), nums2.count(i))
        return l


Solution().intersect([1, 2, 2, 1], [2])
# @lc code=end

Note

  1. 用set分别去重,
  2. 再位运算&计算{1, 2, 1} & {2}得到交集{2}
  3. 得到的是去重了的,要求出这个去重了的结果的元素在两个数组中出现的最少次数
  4. 再用[2] * 4 = [4,4,4,4] 的性质得到结果,
  5. 最后用+=拼合数组,用apend不行