92. 反转链表 II(Medium)
# 题目描述
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
# 样例
Input: 1->2->3->4->5->NULL, m = 2, n = 4
Ouput: 1->4->3->2->5->NULL
1
2
2
# 解题思路
# 代码
class Solution:
def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:
pre, cur = None, head
for _ in range(m - 1):
pre = cur
cur = cur.next
before, after = pre, cur
for _ in range(n - m + 1):
cur_next_bak = cur.next
cur.next = pre
pre = cur
cur = cur_next_bak
if before:
before.next = pre
else:
head = pre
after.next = cur
return head
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
编辑 (opens new window)
上次更新: 2022/10/25, 02:40:54