相交链表

给你两个单链表的头节点 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

总结,这道题就是利用路程相等来做。

posted @   博客是个啥?  阅读(40)  评论(0编辑  收藏  举报
编辑推荐:
· 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编程运行原理
点击右上角即可分享
微信分享提示