LeetCode蹂躏集

LeetCode 160. Intersection of Tw

2018-01-29  本文已影响0人  alexsssu

题意:不改变两个原始链表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;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读