🧩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 · 链表