Skip to content

Commit 16ae87b

Browse files
committed
Update solution 142
1 parent 7206b28 commit 16ae87b

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

solution/142.Linked List Cycle II/README.md

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@
33

44
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 `null`
55

6-
**说明:**不允许修改给定的链表。
6+
**说明:** 不允许修改给定的链表。
77

88
**进阶:**
99
你是否可以不用额外空间解决此题?
1010

1111
### 解法
1212

13-
利用快慢指针,若快指针为 `null`,则不存在环若快慢指针相遇,则存在环,此时退出循环,利用 `p1` 指向链表头结点,`p2` 指向快慢指针相遇点,`p1`, `p2` 同时前进,相遇时即为入环的第一个节点
13+
利用快慢指针,若快指针为 `null`,则不存在环若快慢指针相遇,则存在环,此时退出循环,利用 `p1` 指向链表头结点,`p2` 指向快慢指针相遇点,随后 `p1`, `p2` 同时前进,相遇时(`p1 == p2`)即为入环的第一个节点
1414

1515
**证明如下:**
1616

1717
![solution142-slow-fast.png](http://p9ucdlghd.bkt.clouddn.com/solution142-slow-fast.png)
1818

19-
假设链表到入环点距离为 `a`,入环点到快慢指针相遇点距离为 `b`,慢指针行程为`s`,快指针行程是它的 2 倍,相遇时快指针比慢指针多走了 `n * r`圈,即 `2s`。则:
19+
假设链表到入环点距离为 `a`,入环点到快慢指针相遇点距离为 `b`,慢指针行程为`s`,快指针行程是它的 2 倍,`2s`相遇时快指针比慢指针多走了 `n * r`。则:
2020
```
2121
① a + b = s
2222
② 2s - s = n * r
@@ -28,7 +28,6 @@
2828

2929
`p1`, `p2` 同时向前走 `r - b``p2` 到达入环点,而 `p1` 距离入环点还有 `(n - 1) * r`,双方同时走 `(n - 1)` 圈即可相遇,此时相遇点就是入环点!
3030

31-
3231
```java
3332
/**
3433
* Definition for singly-linked list.

0 commit comments

Comments
 (0)