【LeetCode】350. 两个数组的交集 II
350. 两个数组的交集 II
知识点:哈希表; 双指针
题目描述
给定两个数组,编写一个函数来计算它们的交集。
说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
我们可以不考虑输出结果的顺序。
进阶:
如果给定的数组已经排好序呢?你将如何优化你的算法?
如果 nums1 的大小比 nums2 小很多,哪种方法更优?
如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
示例
解法一:哈希表
这道题和349题的区别就在于这是真的交集,包括已经重复的,所以就不能用set了。又是涉及到次数的,所以我们可以用哈希表来做:统计nums1并记录其出现的次数在哈希表中,遍历nums2,如果出现了那就加入list,并且其次数要-1;如果其次数 < 0,即使还是有也不加了。
时间复杂度:O(N+M);
解法二:排序+双指针
和349题一样,只不过不用判断了,只要两个一样就加入。先将两个数组排序,这样两个数组都是从小到大了,然后使用两个指针同时遍历这两个数组,如果两个指针指的元素相等就是交集加入list,如果两个指针指的值不等,则移动较小的元素,接着比较。直到有一个指针走到了头。其实就是维持了一个从小到大的顺序。这样方便比较。
__EOF__

本文作者:Curryxin
本文链接:https://www.cnblogs.com/Curryxin/p/15054512.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Curryxin/p/15054512.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了