mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
Update
This commit is contained in:
@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
<div align="center"><strong>最新文章会首发在公众号「代码随想录」,扫码看看吧,你会发现相见恨晚!</strong></img></div>
|
<div align="center"><strong>最新文章会首发在公众号「代码随想录」,扫码看看吧,你会发现相见恨晚!</strong></img></div>
|
||||||
|
|
||||||
<div align="center"><img src='https://img-blog.csdnimg.cn/20210321101634295.jpg' width=150 alt=''> </img></div>
|
<div align="center"><img src='./pics/公众号二维码.jpg' width=150 alt=''> </img></div>
|
||||||
|
|
||||||
## 如何使用该刷题攻略
|
## 如何使用该刷题攻略
|
||||||
|
|
||||||
|
BIN
pics/公众号二维码.jpg
Normal file
BIN
pics/公众号二维码.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
@ -6,7 +6,11 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
# 142.环形链表II
|
|
||||||
|
> 找到有没有环已经很不容易了,还要让我找到环的入口?
|
||||||
|
|
||||||
|
|
||||||
|
## 142.环形链表II
|
||||||
|
|
||||||
https://leetcode-cn.com/problems/linked-list-cycle-ii/
|
https://leetcode-cn.com/problems/linked-list-cycle-ii/
|
||||||
|
|
||||||
@ -19,7 +23,7 @@ https://leetcode-cn.com/problems/linked-list-cycle-ii/
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
# 思路
|
## 思路
|
||||||
|
|
||||||
这道题目,不仅考察对链表的操作,而且还需要一些数学运算。
|
这道题目,不仅考察对链表的操作,而且还需要一些数学运算。
|
||||||
|
|
||||||
@ -28,7 +32,7 @@ https://leetcode-cn.com/problems/linked-list-cycle-ii/
|
|||||||
* 判断链表是否环
|
* 判断链表是否环
|
||||||
* 如果有环,如何找到这个环的入口
|
* 如果有环,如何找到这个环的入口
|
||||||
|
|
||||||
## 判断链表是否有环
|
### 判断链表是否有环
|
||||||
|
|
||||||
可以使用快慢指针法, 分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。
|
可以使用快慢指针法, 分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。
|
||||||
|
|
||||||
@ -54,7 +58,7 @@ fast和slow各自再走一步, fast和slow就相遇了
|
|||||||

|

|
||||||
|
|
||||||
|
|
||||||
## 如果有环,如何找到这个环的入口
|
### 如果有环,如何找到这个环的入口
|
||||||
|
|
||||||
**此时已经可以判断链表是否有环了,那么接下来要找这个环的入口了。**
|
**此时已经可以判断链表是否有环了,那么接下来要找这个环的入口了。**
|
||||||
|
|
||||||
@ -102,10 +106,9 @@ fast指针走过的节点数:` x + y + n (y + z)`,n为fast指针在环内走
|
|||||||
|
|
||||||
其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。
|
其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。
|
||||||
|
|
||||||
|
代码如下:
|
||||||
|
|
||||||
# C++代码
|
```C++
|
||||||
|
|
||||||
```
|
|
||||||
/**
|
/**
|
||||||
* Definition for singly-linked list.
|
* Definition for singly-linked list.
|
||||||
* struct ListNode {
|
* struct ListNode {
|
||||||
@ -173,13 +176,14 @@ public:
|
|||||||
|
|
||||||
好了,这次把为什么第一次在环中相遇,slow的 步数 是 x+y 而不是 x + 若干环的长度 + y ,用数学推理了一下,算是对[链表:环找到了,那入口呢?](https://mp.weixin.qq.com/s/_QVP3IkRZWx9zIpQRgajzA)的补充。
|
好了,这次把为什么第一次在环中相遇,slow的 步数 是 x+y 而不是 x + 若干环的长度 + y ,用数学推理了一下,算是对[链表:环找到了,那入口呢?](https://mp.weixin.qq.com/s/_QVP3IkRZWx9zIpQRgajzA)的补充。
|
||||||
|
|
||||||
# 总结
|
## 总结
|
||||||
|
|
||||||
这次可以说把环形链表这道题目的各个细节,完完整整的证明了一遍,说这是全网最详细讲解不为过吧,哈哈。
|
这次可以说把环形链表这道题目的各个细节,完完整整的证明了一遍,说这是全网最详细讲解不为过吧,哈哈。
|
||||||
|
|
||||||
## 其他语言补充
|
## 其他语言版本
|
||||||
|
|
||||||
|
python:
|
||||||
|
|
||||||
python
|
|
||||||
```python
|
```python
|
||||||
class Solution:
|
class Solution:
|
||||||
def detectCycle(self, head: ListNode) -> ListNode:
|
def detectCycle(self, head: ListNode) -> ListNode:
|
||||||
@ -200,7 +204,6 @@ class Solution:
|
|||||||
return None
|
return None
|
||||||
```
|
```
|
||||||
|
|
||||||
欢迎大家补充其他语言的版本实现哈
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user