LeetCode如何求两个链表的第一个公共节点
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍LeetCode如何求两个链表的第一个公共节点,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!题目描述输入两个链表,找出它们的第一个公共节点。如果两个链表没有交点
千家信息网最后更新 2026年10月31日LeetCode如何求两个链表的第一个公共节点
这篇文章主要介绍LeetCode如何求两个链表的第一个公共节点,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
题目描述
输入两个链表,找出它们的第一个公共节点。
如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
题目样例
示例

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
题目思考
如何做到仅用 O(1) 内存得出结果?
解决方案
思路
一个比较容易想到的思路是先遍历其中一个链表, 将节点存入集合中, 然后遍历另一个链表, 查看节点是否存在于集合中, 存在则说明找到. 这样虽然时间复杂度是 O(N), 但空间复杂度也是 O(N), 不满足题目要求 重新观察题目示例, 假设链表 A 和 B 的共享部分长度为 shared, 各自前面独占部分长度为 a 和 b, 那么 A 的总长度为 a+shared, B 的总长度为b+shared根据交换律, A+B 的长度等于 B+A 的长度, 也即 a+shared+b+shared == b+shared+a+shared根据上面这个式子, 我们可以定义两个指针, 分别从 A 和 B 的开头出发, 达到终点后换成另一个链表的起点继续走: 如果 A 和 B 有交点的话, 很显然两个指针会在交点处碰面, 共同走完剩余的 shared 部分; 而如果没交点的话, 两个指针只可能共同走到最后的空节点, 此时就返回 null 特别注意一点, 我们遍历到最后一个节点的时候, 不能直接跳到开头, 而是应该先到末尾后面的空节点, 然后再跳到另一个链表的开头. 因为如果不进入空节点的话, 对于没有交点的情况就永远不可能跳出循环了(永远走不到末尾之后的空节点, 两个指针对应节点永远不可能相等)
复杂度
时间复杂度 O(N): 只需要遍历两遍 空间复杂度 O(1): 只定义了几个变量
代码
class Solution:
def getIntersectionNode(self, headA: ListNode,
headB: ListNode) -> ListNode:
a, b = headA, headB
while a != b:
# a如果到达A的末尾之后的空节点, 就置为B的起点重新遍历
a = headB if not a else a.next
# b如果到达B的末尾之后的空节点, 就置为A的起点重新遍历
b = headA if not b else b.next
return a
以上是"LeetCode如何求两个链表的第一个公共节点"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
节点
两个
复杂
复杂度
长度
交点
题目
指针
末尾
开头
时间
起点
部分
输入
内存
内容
思路
示例
空间
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网络科技
互联网科技行业发展
盈实互联网科技
互联网与科技发展
互联网金融公司科技
互联网科技英文
融贸通互联网科技
大白互联网科技
上海卓越科技 互联网
央行互联网金融科技公司
阿里互联网科技公司
贵州叶脉互联网科技有限公司所属行业
福建科技产业互联网发展
企晟互联网信息科技有限公司
本届互联网大会上的黑科技
工业互联网科技成果转化
山东大美朱楼互联网科技有限公司
科技和互联网行业的特点
银川新华互联网科技学校招聘
小牛互联网科技有限公司地址
互联网科技的发展
互联网 的科技创新
互联网科技论文
科技伦理 互联网公司
盛创互联网科技有限公司
互联网 科技馆
恒生互联网科技指数跳水
小米互联网科技园入驻
保山互联网科技靠谱吗
杭州融税互联网科技有限公司