-
题目:
找两个链表的第一个交点; -
思路:
1.双指针浪漫相遇:时间O(m+n):m和n分别是两链表的长度,空间O(1)
pa和pb走过一样的路,在交点相遇;
若两链表本身不相交,那么在各自走完m+n步后,会同时走到对方的链表尾,同时为nullptr,因此不用担心无限循环;
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
if (!headA || !headB) return nullptr;
auto pa = headA, pb = headB;
while (pa != pb) {
pa = pa ? pa->next : headB;
pb = pb ? pb->next : headA;
}
return pa;
}
};
- 总结:
简单题,过