美文网首页LeetCode蹂躏集
LeetCode 160. Intersection of Tw

LeetCode 160. Intersection of Tw

作者: alexsssu | 来源:发表于2018-01-29 15:10 被阅读0次

    题意:不改变两个原始链表A,B的情况下找到两个链表开始重叠的那个节点,若没有重叠,则返回NULL;
    解法:假设A,B的长度分别为A.length=a+c,B.length=b+c,重叠的长度为c。因为a+c+b+c = b+c+a+c,即a+c+b = b+c+a,那么在最后还剩c个节点的时候一定会相遇。如果c的长度为0,那么会在NULL处相遇。
    复杂度:时间复杂度:O(m+n),空间复杂度:O(1)。

    class Solution {
    public:
        ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
            ListNode* a = headA;
            ListNode* b = headB;
            while (a != b) {
                a = a==NULL ? headB : a->next;
                b = b==NULL ? headA : b->next;
            }
            return a;
        }
    };
    

    相关文章

      网友评论

        本文标题:LeetCode 160. Intersection of Tw

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