Reverse Nodes in k-Group
franklinqin0 RecursionLinked List
# Solution
TODO: explain
def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
n = 0
node = head
while node:
node = node.next
n += 1
dummy = ListNode(next=head)
p0 = dummy
prev = p0
curr = prev.next
while n >= k:
n -= k
for i in range(k):
temp = curr.next
curr.next = prev
prev = curr
curr = temp
nxt = p0.next
p0.next.next = curr
p0.next = prev
p0 = nxt # 把 p0 更新成下一段要翻转 ll 的上一个节点
return dummy.next
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
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