🧩Algo 链表

160. 相交链表

难度:🟢 Easy | 标签:链表、双指针 | 状态:⬜ LeetCode 链接

思路

双指针走「两条路」:a 走完 A 接 B 头,b 走完 B 接 A 头。 两个指针总路程相同(lenA + lenB),相交则在交点相遇,不相交则同时到 nullptr。

代码

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;
    }
};

复杂度

  • 时间 O(m + n),空间 O(1)

易错 / 回顾

  • 不相交时两指针最终都为 nullptr,循环正常退出,返回 nullptr
  • 不要用 a->next ? a->next : headB——会跳过 nullptr 终止条件
Related · 链表