news 2026/9/4 10:56:01

LeetCode 350. 两个数组的交集 II|Python 解法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 350. 两个数组的交集 II|Python 解法详解

LeetCode 350. 两个数组的交集 II|Python 解法详解

CSDN 算法专题 · 数组与哈希表 | 难度:简单

题目信息

  • 题号:350
  • 难度:简单
  • LeetCode:题目链接

题目描述

返回两个数组的交集,每个元素出现次数应等于它在两个数组中出现次数的较小值。

示例

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

约束

数组长度不超过 1000。

解题思路

核心观察

统计较短数组的元素频次,再扫描另一个数组。若当前值剩余次数大于 0,就加入答案并把次数减一,从而严格控制重复数量。

推导与执行步骤

  1. 统计一个数组的频次
  2. 扫描另一个数组
  3. 命中正频次时加入结果
  4. 对应计数减一

为什么这个方法正确

算法始终围绕上述核心观察维护有效状态,并且每一步只排除已经能够证明不可能产生更优答案的情况。按照执行步骤处理后,所有可能影响答案的元素或节点都会被恰好检查,因此不会遗漏合法答案;状态更新又严格遵守题目约束,所以最终结果有效。

从边界看,空区间、单个元素、全部相同或完全不匹配等情况都会落入初始化条件或循环终止条件,不需要依赖未定义状态。实现时再重点检查下标、空节点和重复元素,即可保证算法在极端输入下仍然成立。

Python 代码

# 解法核心:统计较短数组的元素频次,再扫描另一个数组。若当前值剩余次数大于 0,就加入答案并把次数减一,从而严格控制重复数量。# 实现步骤:# 1. 统计一个数组的频次# 2. 扫描另一个数组# 3. 命中正频次时加入结果# 4. 对应计数减一fromcollectionsimportCounterfromtypingimportListclassSolution:defintersect(self,nums1:List[int],nums2:List[int])->List[int]:iflen(nums1)>len(nums2):nums1,nums2=nums2,nums1 counts=Counter(nums1)# 频次表记录每个元素还可以匹配多少次result=[]# 保存最终答案forvalueinnums2:ifcounts[value]>0:result.append(value)counts[value]-=1returnresult

复杂度分析

  • 时间复杂度:O(n+m)
  • 空间复杂度:O(min(n,m))

易错点

不能直接使用集合,否则会丢失重复次数。

总结

这道题的关键是:统计较短数组的元素频次,再扫描另一个数组。理解这一点后,再结合边界条件检查,代码就能保持清晰且稳定。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 10:53:19

YOLOv8改造实现货架形变实时预警系统

简介:本资源是一项面向计算机、人工智能、自动化等专业在校学生与初学者的毕业设计级项目,聚焦智能仓储场景下的货架承重变形实时预警问题,基于YOLOv8目标检测模型实现货架结构异常形变的视觉识别与风险提示。资源包共8个文件(3个…

作者头像 李华
网站建设 2026/9/4 10:51:33

智能座舱EMMC选型避坑指南:从封装到-110错误的5个实战教训

1. 这5个坑,几乎每个智能座舱项目都会踩一遍 做智能座舱的硬件选型,EMMC这块我一开始是真没当回事。当时项目进度紧,看到BOM里写着EMMC 64G,随手挑了个市面上常见的品牌型号就丢给采购了。结果后面几个月,我几乎被这颗…

作者头像 李华
网站建设 2026/9/4 10:49:28

微型UPS升压IC选型指南:从关键参数到实战避坑详解

上个月朋友找我帮他的无线网关做一块断电续传用的微型UPS,输入5V,电池端用的磷酸铁锂,输出要稳定5V/2A给主控板供电。我第一版图省事,直接照着手头一颗升压IC的评估板画,结果装上去就翻车:电池电压还有3.0V…

作者头像 李华
网站建设 2026/9/4 10:48:06

小程序制作平台怎么选?从类型到跨端框架的选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华