求两个数组的交集(2)

题目大意

给定两个数组,写一个方法来计算它们的交集。
例如: 给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].
注意: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。(我们可以不考虑输出结果的顺序。)
这里的要求使用上一篇博客的方法就可以解决。

进一步

1.如果nums1的元素个数比nums2的元素个数少很多。且两者都是排序好的前提下。可以使用二分法,让nums1的每个元素在nums2数组中进行查找和匹配。这样的时间复杂度在O(n1*log n2).
2.如果 nums2 的元素存储在磁盘上,内存是有限的,你不能一次加载所有的 元素到内存中,你该怎么办?

利用队列
在排好序的情况下,然后将数组加入到队列中,拿元素个数较小的做为循环条件, 比较两个队列 peek 数值。相等则输出并出队列,否则将较小值所在的队列进行出队 列操作并及时释放内存至到某个队列为空结束循环。

3.如果 nums1,num2 未进行排序且都不能一次加载呢?

外部排序。
http://www.sohu.com/a/258751244_818692 这个链接讲的很好,他也是转载别人的,没注明是哪个微信公众号,知道的麻烦说一下。

发布了27 篇原创文章 · 获赞 0 · 访问量 413

猜你喜欢

转载自blog.csdn.net/weixin_40007143/article/details/104092194
今日推荐