Reverse Nodes in k-Group (LC-0025)
class Solution:
def reverseKGroup(self, head, k):
def revk(node, k):
prev, curr = None, node
while k > 0 and curr:
k, prev, curr.next, curr = k - 1, curr, prev, curr.next
return prev, curr, k == 0
result = rptr = ListNode(-1)
curr = head
while curr:
processed, unprocessed, success = revk(curr, k)
while rptr and rptr.next: rptr = rptr.next
rptr.next = processed if success else revk(processed, k)[0]
curr = unprocessed
return result.next