You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode160相交链表示例为何相交起始节点是8而非1

LeetCode 160相交链表示例相交点为8而非1的核心原因

链表相交的通用判定规则和节点值没有任何关系:

  • 两个链表相交的本质是,从某一位置开始,两个链表的指针指向了内存中完全相同的节点对象。一旦在某个节点相交,该节点之后的所有节点必然是两个链表完全共享的,不可能出现分叉。

误判的核心问题是把「节点存储的值相等」当成了相交判定标准。结合官方给出的说明:

相交节点的值为8。从A的表头开始遍历,读取序列为[4,1,8,4,5],相交节点前共有2个节点;从B的表头开始遍历,读取序列为[5,6,1,8,4,5],相交节点前共有3个节点。

可以明确示例里两个值为1的节点是完全独立的不同对象:

  • 链表A里值为1的节点,是相交点前A的第2个节点,前驱是A的头节点4,后继直接接值为8的节点,属于A链表独有的节点
  • 链表B里值为1的节点,是相交点前B的第3个节点,前驱是B链表的节点6,后继才接值为8的节点,属于B链表独有的节点
    二者值相同但内存地址完全不同,不可能是相交点。

实际的链表结构如下:

A链路:  4 → 节点A1(值=1) ↘
                          公共节点8 → 公共节点4 → 公共节点5
B链路:5→6→ 节点B1(值=1) ↗

两个链路遍历到值为8的节点时,才第一次指向同一个内存对象,因此8才是真正的相交起始节点。

内容的提问来源于stack exchange,提问作者Rowan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:09:26