Reverse Nodes in k-Group

RecursionLinked List
https://leetcode.com/problems/reverse-nodes-in-k-group

# 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