52. 两个链表的第一个公共节点【双指针】
1. 问题
输入两个链表,找出它们的第一个公共节点。
如下面的两个链表:

在节点 c1 开始相交。
示例 1:

示例 2:

示例 3:

注意:
如果两个链表没有交点,返回 null.
在返回结果后,两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
2. 标签
链表
双指针
3. 解法 - 双指针
太6了,我的理解: 两个链表长度分别为L1+C、L2+C, C为公共部分的长度,按照楼主的做法: 第一个人走了L1+C步后,回到第二个人起点走L2步;第2个人走了L2+C步后,回到第一个人起点走L1步。 当两个人走的步数都为L1+L2+C时就两个家伙就相爱了。——eatalot
⬆️ 哈哈哈哈哈哈笑死我了
3.1 Java
3.2 复杂度分析
时间复杂度
O(M+N):M 和 N 分别是两个链表的长度。空间复杂度
O(1):整个过程只占用了常数大小的存储空间。
4. 解法 - 集合Set
4.1 Java
4. 参考
最后更新于
这有帮助吗?