@@ -13,15 +13,14 @@ Follow up:
1313A linked list can be reversed either iteratively or recursively. Could you implement both?
1414
1515## 思路
16- 这个就是常规操作了,使用一个变量记录前驱pre,一个变量记录后继next .
16+ 这个就是常规操作了,使用一个变量记录前驱 pre,一个变量记录后继 next .
1717
1818不断更新` current.next = pre ` 就好了
1919## 关键点解析
2020
2121- 链表的基本操作(交换)
22- - 虚拟节点dummy 简化操作
23- - 注意更新current和pre的位置, 否则有可能出现溢出
24-
22+ - 虚拟节点 dummy 简化操作
23+ - 注意更新 current 和 pre 的位置, 否则有可能出现溢出
2524
2625## 代码
2726
@@ -135,15 +134,15 @@ class Solution {
135134
136135## 拓展
137136
138- 通过单链表的定义可以得知,单链表也是递归结构,因此,也可以使用递归的方式来进行reverse操作 。
137+ 通过单链表的定义可以得知,单链表也是递归结构,因此,也可以使用递归的方式来进行 reverse 操作 。
139138> 由于单链表是线性的,使用递归方式将导致栈的使用也是线性的,当链表长度达到一定程度时,递归会导致爆栈,因此,现实中并不推荐使用递归方式来操作链表。
140139
141140### 描述
142141
143- 1 . 除第一个节点外,递归将链表reverse
144- 2 . 将第一个节点添加到已reverse的链表之后
142+ 1 . 除第一个节点外,递归将链表 reverse
143+ 2 . 将第一个节点添加到已 reverse 的链表之后
145144
146- > 这里需要注意的是,每次需要保存已经reverse的链表的头节点和尾节点
145+ > 这里需要注意的是,每次需要保存已经 reverse 的链表的头节点和尾节点
147146
148147### C++实现
149148```c++
@@ -193,7 +192,7 @@ public:
193192};
194193```
195194
196- ### JavaScript实现
195+ ### JavaScript 实现
197196``` javascript
198197var reverseList = function (head ) {
199198 // 递归结束条件
@@ -203,13 +202,24 @@ var reverseList = function(head) {
203202
204203 // 递归反转 子链表
205204 let newReverseList = reverseList (head .next )
206- // 获取原来链表的第2个节点newReverseListTail
205+ // 获取原来链表的第 2 个节点 newReverseListTail
207206 let newReverseListTail = head .next
208- // 调整原来头结点和第2个节点的指向
207+ // 调整原来头结点和第 2 个节点的指向
209208 newReverseListTail .next = head
210209 head .next = null
211210
212211 // 将调整后的链表返回
213212 return newReverseList
214213}
215214```
215+
216+ ### Python 实现
217+ ``` python
218+ class Solution :
219+ def reverseList (self , head : ListNode) -> ListNode:
220+ if not head or not head.next: return head
221+ ans = self .reverseList(head.next)
222+ head.next.next = head
223+ head.next = None
224+ return ans
225+ ```
0 commit comments