160.相交链表
https://leetcode-cn.com/problems/intersection-of-two-linked-lists
题目描述
方法 1:暴力法
思路
对于链表 A 的每个节点,都去链表 B 中遍历一遍找看看有没有相同的节点。
复杂度
时间复杂度:$O(M * N)$, M, N 分别为两个链表的长度。
空间复杂度:$O(1)$。
代码(JavaScript/C++)
JavaScript Code
C++ Code
方法 2:哈希表
思路
先遍历一遍链表 A,用哈希表把每个节点都记录下来(注意要存节点引用而不是节点值)。
再去遍历链表 B,找到在哈希表中出现过的节点即为两个链表的交点。
复杂度
时间复杂度:$O(M + N)$, M, N 分别为两个链表的长度。
空间复杂度:$O(N)$,N 为链表 A 的长度。
代码(JavaScript/C++)
JavaScript Code
C++ Code
方法 3:双指针
思路

如果链表有交点

如果链表没有交点
两个链表长度一样,第一次遍历结束后 pA 和 pB 都是 null,结束遍历
两个链表长度不一样,两次遍历结束后 pA 和 pB 都是 null,结束遍历
复杂度
时间复杂度:$O(M + N)$, M, N 分别为两个链表的长度。
空间复杂度:$O(1)$。
代码(JavaScript/C++)
C++ Code
Last updated
Was this helpful?