news 2026/5/8 16:16:49

LeetCode 两个数组的交集 II题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 两个数组的交集 II题解

LeetCode 两个数组的交集 II题解

题目描述

给定两个数组,编写一个函数来计算它们的交集。

示例

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

解题思路

方法:哈希表

思路

  • 使用哈希表来解决这个问题。
  • 首先遍历第一个数组,将每个元素存入哈希表中,统计每个元素出现的次数。
  • 然后遍历第二个数组,对于每个元素,如果在哈希表中存在且计数大于 0,将其加入结果列表,并将哈希表中的计数减 1。
  • 最后返回结果列表。

复杂度分析

  • 时间复杂度:O(m + n),其中 m 和 n 分别是两个数组的长度。
  • 空间复杂度:O(min(m, n)),需要额外的空间来存储哈希表。

代码实现

方法:哈希表

from collections import defaultdict # 两个数组的交集 II(哈希表) def intersect(nums1, nums2): # 创建哈希表,统计 nums1 中每个元素出现的次数 count = defaultdict(int) for num in nums1: count[num] += 1 # 遍历 nums2,找出交集元素 result = [] for num in nums2: if count[num] > 0: result.append(num) count[num] -= 1 return result # 测试 def test_intersect(): nums1 = [1, 2, 2, 1] nums2 = [2, 2] print(intersect(nums1, nums2)) # 输出:[2, 2] nums1 = [4, 9, 5] nums2 = [9, 4, 9, 8, 4] print(intersect(nums1, nums2)) # 输出:[9, 4] if __name__ == "__main__": test_intersect()

测试用例

测试用例 1:基本情况

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

测试用例 2:多个交集元素

输入:nums1 = [4,9,5],nums2 = [9,4,9,8,4]
输出:[9,4]

总结

两个数组的交集 II 是一个经典的哈希表问题,它可以通过哈希表来高效地解决。

哈希表法的核心思想是:使用哈希表统计第一个数组中每个元素出现的次数,然后遍历第二个数组,找出在哈希表中存在且计数大于 0 的元素。

掌握哈希表的使用方法,对于解决类似的问题非常重要。

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

从MWC看5G与AI技术演进:硬件内卷与真实应用场景的思考

1. 巴塞罗那MWC:一场科技与现实的割裂体验作为一名在通信行业摸爬滚打了十几年的老兵,每年二月底三月初,我的朋友圈都会被同一个地方刷屏——西班牙巴塞罗那。不是因为高迪的建筑,也不是因为地中海的阳光,而是因为那个…

作者头像 李华
网站建设 2026/5/8 16:15:18

MiniClaw:为AI编程助手注入记忆与自主性的数字生命框架

1. 项目概述:一个为AI副驾驶注入“灵魂”的数字生命胚胎如果你和我一样,长期与Cursor、Claude Desktop这类AI编程助手并肩作战,你可能会发现一个痛点:它们很聪明,但缺乏“记忆”和“连续性”。每次开启新会话&#xff…

作者头像 李华
网站建设 2026/5/8 16:15:15

OpenClaw SSH安全防护插件:为AI助手远程命令执行加装安全锁

1. 项目概述:为AI助手加上SSH命令的“安全锁”在自动化运维和AI辅助开发的浪潮下,我们越来越习惯让AI助手(Agent)直接执行系统命令来提升效率。这很方便,但同时也埋下了巨大的安全隐患。想象一下,一个拥有S…

作者头像 李华