相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
图示两个链表在节点 c1 开始相交:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
相交链表
map
遍历第一个,全存起来,再遍历第二个,去map里查有没有重复的。空间利用率非常不行
双指针
声明两个指针指向两个链表头,开始往后遍历
思路 两个指针都一起往后走,如果两个指针指向了相同节点,就返回这个节点,如果有一个先走到头了,就回过头指向另一条链表的头,往后走,这样如果两个链表相交,两个指针总能指到一起去,若不相交,就会一起变成null,然后返回null就好了
-
相交的情况:
-
若相交节点前的不相交节点数一样,那就很轻松走到一起了
-
不一样:例如示例中,我们用指针p1,p2分别指向headA,和headB。
-
p1走到c1的时候,p1走到了b3,然后p1走到c3的时候,p2走到了c2,然后,p1指向b1,p2走到c3,下一步让p2走到a1,这时p1在b2,2步后,同时走到c1
普遍情况:相交部分c个节点,不相交部分节点数分别为a,b,p1走过a+c+b个节点到达相交节点,p2走过b+c+a个节点后到达相交节点。
-
不相交的情况;
- 长度一样,一起走到头
- 长度不一样,一个为m,一个为n,还像上面那样走,p1和p2都会走m+n个节点,一起走到null,这是p1=p2,返回null
总结,这道题就是利用路程相等来做。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理