160. 相交链表

89 阅读1分钟

160. 相交链表

思路关键: 相交部分必然在最后,所以应该让长度不同的A、B链表末尾对齐

  1. 思路1:
3E19531448086FCA0773589AD69AD283.jpg
  1. 思路2:

    设链表A的长度为a,链表B的长度为b,相交部分长度为c(c≥0)

    A到相交node的len = a - c

    B到相交node的len = b - c

    b + (a - c) = a + (b - c)

代码:

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