「每日LeetCode」2021年8月23日
本文最后更新于:2023年3月19日 晚上
面试题 02.07. 链表相交
面试题 02.07. 链表相交
给你两个单链表的头节点 headA
和 headB
,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null
。
图示两个链表在节点 c1
开始相交:
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
1 |
|
1 |
|
1 |
|
提示:
listA
中节点数目为m
listB
中节点数目为n
0 <= m, n <= 3 * 10
1 <= Node.val <= 10
0 <= skipA <= m
0 <= skipB <= n
- 如果
listA
和listB
没有交点,intersectVal
为0
- 如果
listA
和listB
有交点,intersectVal == listA[skipA + 1] == listB[skipB + 1]
进阶:你能否设计一个时间复杂度 O(n)
、仅用 O(1)
内存的解决方案?
思路
常见题,a + b = b + a,可以得知如果是相交的链表,最后至多走过 a + b 之后一定会相遇,所以当 a 到尽头时将 a 设为 headb,b 到尽头时设为 heada,最后返回相交点即可。
解答
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!