Python学习教程:(初级算法)取交集

Python学习教程:(初级算法)取交集

题目分析

因为题目不是很长,这里把题目贴出来:

Python学习教程:(初级算法)取交集

题目意思,敲重点:

1、找出两个列表里重复的元素
2、不仅仅是取交集这么简单,注意 Note 里的那句话:

即交集的定义是只要元素出现,但结果里需要展示出现次数最少的。比如 nums1 = [1,2,2,1], nums2 = [2,2] 按题意取交集,如果正常按数学思维取交集结果应该是 [2],但题目意思是次数也要算在内,所以答案是 [2, 2]。

因此,整个题目应该是 数字 + 出现次数一起取交集。答案不限制数字顺序。

参考答案

因为题目并没有对空间条件有什么限制,所以我们可以引入中间的一些 list 或者 dict 来存储中间结果。很容易想到用 dict,key 为数字,值为出现次数,然后如果两个 dict 里均有此数字,则取最小的次数做为当前数字的交集结果。

参考代码如下:

这里有一个小的知识点,也算是代码比较优雅的写法,即用到了 defaultdict。它的用法很简单,通常我们在申明一个普通的 dict 时,如果 key 不存在,通过 dict[key] 的形式会报错,只能通过 dict.get(key) 的返回是否为 None 来判断是否存在 key (或者通过 in)。即:


不知道伙伴们是否能懂,不清楚的可以留言,更多的Python学习教程也会继续为大家更新!


请使用浏览器的分享功能分享到微信等