当前位置: 首页 > news >正文

【算法面试必刷】160. 相交链表

目录

题目

题目链接

思路

复杂度

代码


题目

题目链接

160. 相交链表 - 力扣(LeetCode)https://leetcode.cn/problems/intersection-of-two-linked-lists/description/?envType=study-plan-v2&envId=top-100-liked

思路

利用哈希集合(unordered_set)存储链表 A 的所有节点指针,然后遍历链表 B,第一个出现在集合中的节点即为交点。

复杂度

  • 时间复杂度O(m + n),其中mn分别是链表 A 和 B 的长度。需要遍历两个链表各一次,哈希集合的插入和查找操作平均为O(1)

  • 空间复杂度O(m)O(n),取决于选择存储哪个链表。这里存储了链表 A 的所有节点,因此空间复杂度为O(m)

代码

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { // 创建一个哈希集合,用于存储链表A的所有节点指针 unordered_set<ListNode *> visited; // 临时指针,用于遍历链表A ListNode *tmp = headA; while (tmp != nullptr) { // 将当前节点指针插入集合 visited.insert(tmp); // 移动到下一个节点 tmp = tmp->next; } // 重新将临时指针指向链表B的头节点 tmp = headB; while (tmp != nullptr) { // 检查当前节点是否已经在集合中(即是否在链表A中出现过) if (visited.count(tmp)) { // 如果存在,说明这是交点,直接返回该节点 return tmp; } // 否则继续遍历下一个节点 tmp = tmp->next; } // 遍历完链表B都没有找到交点,则返回nullptr return nullptr; } };
http://www.jsqmd.com/news/457795/

相关文章:

  • Flutter 组件 colorize_lumberdash 适配鸿蒙 HarmonyOS 实战:色彩化日志调试,构建直观的异常检测矩阵
  • 基于大数据+Hadoop+深度学习的经典名著推荐系统设计与开发(源码+精品论文+答辩PPT等资料)
  • 预应力塑料波纹管用途
  • DeekSeek 3.2和Qwen 3.5生成的求解24点程序对比
  • 移远通信 × 圆周率科技:PanoX V5全新亮相,将全景影像能力“装进”日常生活
  • Flutter 组件 geohash_plus 适配鸿蒙 HarmonyOS 实战:高维地理降维,构建纳秒级时空索引矩阵
  • Spring Boot隐式参数注入:代码优雅升级指南
  • linux关键指令无废话
  • 偷偷保存!高效破解压缩包密码的神级软件!
  • 0-MySQL 在 Centos 7环境详细安装过程
  • PAT 乙级 1047
  • Claude Code 保姆级攻略,包含连接vscode/JetBrains(2026)
  • 木下~Linux系统编程之静态库与动态库
  • 多无人机动态避障路径规划研究:基于粒子群优化算法PSO的多无人机动态避障路径规划研究(可以自定义无人机数量及起始点),MATLAB代码
  • 落叶清扫机设计(开题报告+三维图)
  • 基于大数据+Hadoop+深度学习的股票预测系统设计与开发(源码+精品论文+答辩PPT等资料)
  • 基于springboot中小学数字化教学资源管理平台(源码+文档+调试+讲解)
  • 从智能马桶到淋浴房,九牧凭什么持续领跑行业
  • C++核心概念:命名空间与构造析构解析
  • 三进制+钱学森:复杂系统动态平衡的底层同频与工程化实现原则
  • Android Intent.setAction失效报错排查与修复全方案
  • 万字长文实测:对比5款主流论文AI,为何 Scholingo 是最懂中国高校的“降重神器”?
  • 并发编程笔记1
  • 青蛙跳台阶
  • Linux系统编程-数据库-SQLite
  • Flutter —— GetIt、Dio
  • 基于springboot的人事管理系统(源码+文档+调试+讲解)
  • C语言二维数组详解:定义与初始化
  • Claw 批量生成公众号文章实践:一天写 100 篇的工作流复盘
  • 基于大数据+Hadoop+深度学习的酒店评论文本情感分析研究设计与开发(源码+精品论文+答辩PPT等资料)