public class Solution public ListNode getIntersectionNodeListNode headA ListNode headB ifheadA == null headB == null return null; ListNode A = headA; List
节点处结束循环并返回相交节点或者 null 呢?
这是因为,如果两个链表相交,它们的相交部分一定是相同的,也就是说,从相交节点开始,后面的节点都是相同的。所以,如果 A 和 B 一个一个节点地比较,如果存在相交节点,那么 A 和 B 最终一定会同时到达相交节点。如果不存在相交节点,那么 A 和 B 最终都会到达各自的链表尾部,此时 A 和 B 的值都为 null,退出循环并返回 null。
具体来说,如果 A 和 B 相交,那么 A 和 B 走过的路程是相同的,都是从各自的头节点到相交节点的距离加上从相交节点到相交部分尾部的距离。如果 A 和 B 不相交,那么 A 和 B 走过的路程也是相同的,都是从各自的头节点到链表尾部的距离。所以,当 A 和 B 走过的路程相同时,如果存在相交节点,那么 A 和 B 最终一定会同时到达相交节点。
原文地址: https://www.cveoy.top/t/topic/bZqJ 著作权归作者所有。请勿转载和采集!