-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathreverse-linked-list-ii.py
More file actions
40 lines (30 loc) · 908 Bytes
/
reverse-linked-list-ii.py
File metadata and controls
40 lines (30 loc) · 908 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class Solution:
def reverseBetween(self, head, m, n):
if not head:
return
pre_range = None
post_range = None
range_begin = None
range_end = None
prev_node = None
pos = 1
node = head
while node:
node_next = node.next
if m <= pos <= n:
range_begin = node if not range_begin else range_begin
range_end = node
post_range = node.next
node.next = prev_node
else:
pre_range = node if not post_range else pre_range
prev_node = node
node = node_next
pos += 1
if range_begin:
range_begin.next = post_range
if pre_range:
pre_range.next = range_end
if range_begin == head:
head = range_end
return head