【链表】LC 160.相交链表
文章目录前言一、题目1、原题链接2、题目描述二、个人思路整理1、思路分析双指针解法非双指针解法哈希表2、解题代码双指针解法非双指针解法哈希表三、知识风暴前言本专栏文章为《LeetCode 热题 100》的刷题题解相关内容如有侵权立即删除。一、题目1、原题链接160.相交链表2、题目描述二、个人思路整理1、思路分析双指针解法这个解法有点妙说实话理解不是很透彻根据自己的理解梳理一下。由于想要达到O(1)的空间复杂度不能开辟额外空间本质上还是消除两个链表的长度差由于链表在相交节点前走过的节点数是不同的所以不能直接同时遍历来找相交的节点从而达到一次遍历找到交点当然也可以先计算链表的长度差然后让长链表先走长度差距离然后再一起向后走第一个相同的节点即为交点我的理解是如果要同时一次同时遍历就能找到交点就必须把交点前的距离经过的节点数补齐补齐即可不需要管补充的这段距离是否存在相交节点如果确实存在在后续遍历中由于补充的距离不同所以不可能是在同时遍历中的第一个相同节点这样一次同时遍历当遇到的第一个相同节点即为相交节点本质上我认为是3这种理解。具体举例如果链表A长度为a、链表B长度为b相交的部分长度为c可以把从A从B链表开始遍历的距离各想成一条直线直线最后部分就是c而直线前半部分存在不相等的情况需要补全若要补全前面的长度差就可以让链表A多走一个b距离让链表B多走一个a距离这样就相当于A走了ab而B走了ba由于只是补在前面后面的共有部分没有变所以当前面走完相同距离遇到的第一个相同的点即为交点。所以最终的解法两链表同时遍历A链表先遍历一遍A若遍历完则继续遍历BB链表先遍历一遍B若遍历完则继续遍历A当遍历遇到第一个相同节点即为交点。下面为大模型给出的解释参考防遗忘为什么这个方法有效数学原理解析设链表 A 独有的长度为a aa链表 B 独有的长度为b bb两链表公共相交部分的长度为c cc那么链表 A 的总长度为a c a cac链表 B 的总长度为b c b cbc当指针 pA 走完 A 再走 B 时到达交点的总路程是a c b a c bacb当指针 pB 走完 B 再走 A 时到达交点的总路程是b c a b c abca因为a c b b c a a c b b c aacbbca所以两个指针走过的总路程完全一致这就消除掉了两条链表前段长度不一样的差值。如果不相交即c 0 c 0c0pA 走了a b a bab步后变为 nullptrpB 走了b a b aba步后也变为 nullptr此时 pA pB nullptr完美统一了逻辑。非双指针解法哈希表遍历链表A将元素放置到哈希表中然后从头节点开始依次遍历链表B遍历到第一个的存在于哈希表中的节点即为相交节点否则不相交。2、解题代码双指针解法/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */classSolution{public:ListNode*getIntersectionNode(ListNode*headA,ListNode*headB){ListNode*paheadA;ListNode*pbheadB;// 当指向同一节点则结束while(pa!pb){pa(panullptr)?headB:pa-next;//当遍历完A遍历Bpb(pbnullptr)?headA:pb-next;//当遍历完B遍历A}returnpa;}};非双指针解法哈希表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */classSolution{public:ListNode*getIntersectionNode(ListNode*headA,ListNode*headB){unordered_setListNode*s;ListNode*tmpheadA;while(tmp!nullptr){s.insert(tmp);tmptmp-next;}tmpheadB;while(tmp!nullptr){if(s.count(tmp)){returntmp;}tmptmp-next;}returnnullptr;}};三、知识风暴NULL与nullptrC11及以上一律使用nullptr表示空指针nullptrC11 引入的关键字强类型字面量实际类型为std::nullptr_t类型的常数纯C语言或C98以前才继续使用NULLNULL宏定义通常被定义为整数0或(void*)0实际类型为整型int/long

相关新闻

开源AI智能体平台:学术版OpenClaw部署与技能开发实战

开源AI智能体平台:学术版OpenClaw部署与技能开发实战

1. 从“学术版OpenClaw”说起:一个开源AI智能体的诞生最近在AI圈子里,一个名为“学术版OpenClaw”的项目引起了不少讨论。乍一听这个名字,可能会让人联想到某个商业产品的“学术特供版”,但深入了解后,你会发现它远不止…

2026/8/2 5:30:39阅读更多 →
AI视频制作终极指南:从零开始掌握MoneyPrinterPlus的全流程

AI视频制作终极指南:从零开始掌握MoneyPrinterPlus的全流程

AI视频制作终极指南:从零开始掌握MoneyPrinterPlus的全流程 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,GPTSoVIT…

2026/8/2 5:28:39阅读更多 →
CS Demo Manager:从录像到洞察的终极CS比赛分析指南

CS Demo Manager:从录像到洞察的终极CS比赛分析指南

CS Demo Manager:从录像到洞察的终极CS比赛分析指南 【免费下载链接】cs-demo-manager Companion application for your Counter-Strike demos. 项目地址: https://gitcode.com/gh_mirrors/cs/cs-demo-manager 你是否曾打完一场CS比赛后,只记得几…

2026/8/2 5:28:39阅读更多 →
智谱AI Coding Agent推理工程实践:吞吐量提升132%的架构优化之道

智谱AI Coding Agent推理工程实践:吞吐量提升132%的架构优化之道

1. 从“单兵作战”到“流水线工厂”:Coding Agent推理工程的核心挑战最近,智谱AI首次公开了他们在Coding Agent推理工程上的实践细节,其中提到吞吐量最高提升了132%。这个数字听起来很技术,但背后反映的是一个所有做大模型应用的公…

2026/8/2 6:51:01阅读更多 →
Unity后处理实战:Color Grading调色全解析与性能优化指南

Unity后处理实战:Color Grading调色全解析与性能优化指南

1. 项目概述:为什么Color Grading是后处理的核心在Unity里做项目,尤其是涉及到视觉表现的部分,你迟早会跟“后处理”这个老朋友打交道。它就像给游戏画面做最后的“精修”和“调色”,直接决定了玩家第一眼的视觉感受。而在众多后处…

2026/8/2 6:51:01阅读更多 →
VMware Ubuntu虚拟机磁盘扩容与空间回收完整指南

VMware Ubuntu虚拟机磁盘扩容与空间回收完整指南

1. 问题场景:当你的Ubuntu虚拟机开始“报警”如果你和我一样,长期在VMware Workstation里跑Ubuntu虚拟机做开发、测试或者学习,那么迟早会遇到这两个让人头疼的问题:虚拟机内部空间告急,以及宿主机上那个巨大的.vmdk文…

2026/8/2 6:51:01阅读更多 →
Servlet :生命周期、配置与实战

Servlet :生命周期、配置与实战

一、Servlet 概述 1.1 JavaWeb 的三大组件 JavaWeb 开发中有三大核心组件,它们是构建 Java Web 应用的基石: 组件一:Servlet 作用:处理客户端请求,生成动态响应内容。是 JavaWeb 最基础的组件,必须 100%…

2026/8/2 6:51:01阅读更多 →
React获取DOM元素全解析:掌握Refs与Hook核心用法

React获取DOM元素全解析:掌握Refs与Hook核心用法

一、React中获取DOM元素的背景与核心思想 1.1 为什么需要获取DOM元素 React的核心思想是声明式渲染与虚拟DOM, 通常情况下我们不需要直接操作真实DOM。但在某些特定场景下, 我们仍然需要直接获取真实的DOM节点来进行命令式操作。这些场景包括但不限于: (1) 管理焦点, 文本选择或…

2026/8/2 6:51:01阅读更多 →
字符分割技术全解析:从投影法到深度学习的实战指南

字符分割技术全解析:从投影法到深度学习的实战指南

1. 项目概述:从“字”到“符”的精准拆解字符分割,听起来像是一个专属于图像处理或OCR领域的术语,但它的应用远比我们想象的要广泛和基础。简单来说,它就是把一个连续的、粘连的字符序列,准确地切割成一个个独立的单元…

2026/8/2 6:49:00阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/2 1:29:34阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/2 2:32:55阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/2 2:09:20阅读更多 →