File tree Expand file tree Collapse file tree 2 files changed +43
-0
lines changed Expand file tree Collapse file tree 2 files changed +43
-0
lines changed Original file line number Diff line number Diff line change 43
43
* [ 链表:一道题目考察了常见的五个操作!] ( https://mp.weixin.qq.com/s/Cf95Lc6brKL4g2j8YyF3Mg )
44
44
* [ 链表:听说过两天反转链表又写不出来了?] ( https://mp.weixin.qq.com/s/pnvVP-0ZM7epB8y3w_Njwg )
45
45
* [ 链表:环找到了,那入口呢?] ( https://mp.weixin.qq.com/s/_QVP3IkRZWx9zIpQRgajzA )
46
+ * [ 链表:总结篇!] ( https://mp.weixin.qq.com/s/vK0JjSTHfpAbs8evz5hH8A )
46
47
47
48
* 哈希表
48
49
* [ 关于哈希表,你该了解这些!] ( https://mp.weixin.qq.com/s/g8N6WmoQmsCUw3_BaWxHZA )
133
134
* [ 回溯算法:求组合问题!] ( https://mp.weixin.qq.com/s/OnBjbLzuipWz_u4QfmgcqQ )
134
135
* [ 回溯算法:组合问题再剪剪枝] ( https://mp.weixin.qq.com/s/Ri7spcJMUmph4c6XjPWXQA )
135
136
* [ 回溯算法:求组合总和!] ( https://mp.weixin.qq.com/s/HX7WW6ixbFZJASkRnCTC3w )
137
+ * [ 回溯算法:电话号码的字母组合] ( https://mp.weixin.qq.com/s/e2ua2cmkE_vpYjM3j6HY0A )
138
+ * [ ] ( )
136
139
137
140
(持续更新中....)
138
141
Original file line number Diff line number Diff line change @@ -132,5 +132,45 @@ public:
132
132
}
133
133
};
134
134
```
135
+
136
+ ## 补充
137
+
138
+ 在推理过程中,大家可能有一个疑问就是:** 为什么第一次在环中相遇,slow的 步数 是 x+y 而不是 x + 若干环的长度 + y 呢?**
139
+
140
+ 即文章[ 链表:环找到了,那入口呢?] ( https://mp.weixin.qq.com/s/_QVP3IkRZWx9zIpQRgajzA ) 中如下的地方:
141
+
142
+ <img src =' ../pics/142环形链表5.png ' width =600 > </img ></div >
143
+
144
+
145
+ 首先slow进环的时候,fast一定是先进环来了。
146
+
147
+ 如果slow进环入口,fast也在环入口,那么把这个环展开成直线,就是如下图的样子:
148
+
149
+ <img src =' ../pics/142环形链表3.png ' width =600 > </img ></div >
150
+
151
+ 可以看出如果slow 和 fast同时在环入口开始走,一定会在环入口3相遇,slow走了一圈,fast走了两圈。
152
+
153
+ 重点来了,slow进环的时候,fast一定是在环的任意一个位置,如图:
154
+
155
+ <img src =' ../pics/142环形链表4.png ' width =600 > </img ></div >
156
+
157
+ 那么fast指针走到环入口3的时候,已经走了k + n 个节点,slow相应的应该走了(k + n) / 2 个节点。
158
+
159
+ 因为k是小于n的(图中可以看出),所以(k + n) / 2 一定小于n。
160
+
161
+ ** 也就是说slow一定没有走到环入口3,而fast已经到环入口3了** 。
162
+
163
+ 这说明什么呢?
164
+
165
+ ** 在slow开始走的那一环已经和fast相遇了** 。
166
+
167
+ 那有同学又说了,为什么fast不能跳过去呢? 在刚刚已经说过一次了,** fast相对于slow是一次移动一个节点,所以不可能跳过去** 。
168
+
169
+ 好了,这次把为什么第一次在环中相遇,slow的 步数 是 x+y 而不是 x + 若干环的长度 + y ,用数学推理了一下,算是对[ 链表:环找到了,那入口呢?] ( https://mp.weixin.qq.com/s/_QVP3IkRZWx9zIpQRgajzA ) 的补充。
170
+
171
+ # 总结
172
+
173
+ 这次可以说把环形链表这道题目的各个细节,完完整整的证明了一遍,说这是全网最详细讲解不为过吧,哈哈。
174
+
135
175
> 更多算法干货文章持续更新,可以微信搜索「代码随想录」第一时间围观,关注后,回复「Java」「C++」 「python」「简历模板」「数据结构与算法」等等,就可以获得我多年整理的学习资料。
136
176
You can’t perform that action at this time.
0 commit comments