每日一题 2019 - 05 - 08
题目:
Given a linked list, return the node where the cycle begins. If there is no cycle, return null
.
To represent a cycle in the given linked list, we use an integer pos
which represents the position (0-indexed) in the linked list where tail connects to. If pos
is -1
, then there is no cycle in the linked list.
Note: Do not modify the linked list.
Example 1:
1 | Input: head = [3,2,0,-4], pos = 1 |
Example 2:
1 | Input: head = [1,2], pos = 0 |
Example 3:
1 | Input: head = [1], pos = -1 |
Follow up:
Can you solve it without using extra space?
解法:
这个题让找出链表存在的环的入口,思路十分的巧妙,也即通过快慢双指针法进行求解,快指针每次运动两步,慢指针每次运行一步,当快慢指针相遇时候,此时慢指针到达入口的距离一定等于链表起始点到达入口的距离(这里是有严格的数学推导的),此时再从链表头部设置一个指针开始追赶慢指针,一定就能找到入口所在;
代码:
1 | /** |