美文网首页
两个链表的第一个公共节点(浪漫相遇)

两个链表的第一个公共节点(浪漫相遇)

作者: 曾大稳丶 | 来源:发表于2022-05-17 17:04 被阅读0次

题目链接:https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/

image.png

题目解析:
本题目采用双指针的方式,当A B指针不相等的时候,依次遍历,如果A B指针任意为null,就赋值A=B(如果Anull)或者B=A(如果Bnull)
原理: A的长度为aB的长度为b, 相交点距离最末尾的距离为c 。那么A从头走到尾,在从B的头走到相交点,那么距离就是a+(b-c)B从头走到尾,在从A的头走到相交点,那么距离是b+(a-c),满足加法交换律,所以找到相交点。
图文分析可见:https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/solution/jian-zhi-offer-52-liang-ge-lian-biao-de-gcruu/

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
    ListNode A = headA,B = headB;
    while (A != B){
        A = A == null ? headB : A.next;
        B = B == null ? headA : B.next;
    }
    return headA;
}

复杂度分析
空间复杂度: O(1)。
时间复杂度: O(M+N)。

相关文章

网友评论

      本文标题:两个链表的第一个公共节点(浪漫相遇)

      本文链接:https://www.haomeiwen.com/subject/myynurtx.html