0
点赞
收藏
分享

微信扫一扫

LeetCode——160.相交链表

英乐 2022-05-01 阅读 151

@labuladong

方法一:两个指针,一个先遍历 A ,再遍历 B ,如果有相交部分,再相交位置会相等

方法二:将 A、B中长的部分从前面截掉,再进行遍历,则同时到达相交点

方法三:将 A 的末尾与 B 的开头连接起来,则简化为“是否有环及环起点”的问题

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
    //一个指针先遍历B再遍历A,一个指针先遍历A再遍历B,两者是同时结束的,即同时为null
        ListNode p1 = headA , p2 = headB;
    
    while (p1 != p2) {
        // p1 走一步,如果走到 A 链表末尾,转到 B 链表
        if (p1 == null) p1 = headB;
        else            p1 = p1.next;
        // p2 走一步,如果走到 B 链表末尾,转到 A 链表
        if (p2 == null) p2 = headA;
        else            p2 = p2.next;
    }
    return p1;
}
}
举报

相关推荐

0 条评论