题目
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [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
- 用set分别去重,
- 再位运算&计算{1, 2, 1} & {2}得到交集{2}
- 得到的是去重了的,要求出这个去重了的结果的元素在两个数组中出现的最少次数
- 再用[2] * 4 = [4,4,4,4] 的性质得到结果,
- 最后用+=拼合数组,用apend不行
