// 登录 AlgoMooc 官网获取更多算法图解
// https://www.algomooc.com
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
// 边界判断
if (headA == null || headB == null) return null;
// 从两个链表的头结点开始遍历
ListNode pA = headA, pB = headB;
//指针 PA 和 指针 PB 不断向后遍历,直到找到相交点
//如果两个链表不相交,则相当于 null 是它们的相交点,因此不会跳不出 while 循环
while (pA != pB) {
// 指针 PA 一开始在链表 A 上遍历,当走到链表 A 的尾部即 null 时,跳转到链表 B 上
pA = pA == null ? headB : pA.next;
// 指针 PB 一开始在链表 B 上遍历,当走到链表 B 的尾部即 null 时,跳转到链表 A 上
pB = pB == null ? headA : pB.next;
}
return pA;
}
}
剑指 Offer 52. 两个链表的第一个公共节点
最新推荐文章于 2024-07-16 23:15:32 发布