160. 相交链表
思路关键: 相交部分必然在最后,所以应该让长度不同的A、B链表末尾对齐
- 思路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;
}
};