方法一:哈希
时间复杂度O(N+M+2K),空间复杂度O(N)
方法二:双指针
时间复杂度O(2N+2M+K),空间复杂度O(1)
class Solution {
public:
unordered_set<ListNode*> nodes;
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode* p1=headA,*p2=headB;
while(p1!=p2){
p1 = !p1?headB:p1->next;
p2 = !p2?headA:p2->next;
}
return p1;
}
};
该文讨论了两种寻找两个链表交点的方法:一种利用哈希表,时间复杂度为O(N+M+2K),空间复杂度为O(N);另一种采用双指针技术,时间复杂度为O(2N+2M+K),空间复杂度为O(1)。具体实现中,定义了一个unordered_set存储链表节点,并通过循环直到两个指针相遇来找到交点。
247

被折叠的 条评论
为什么被折叠?



