25. Reverse Nodes in k-Group

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

目前比较好理解的是recursive的解法,但是memory usage is not constant here is O(n/k)

class Solution:
    def reverseKGroup(self, head: ListNode, k: int) -> ListNode:
        cnt = 0
        curr = head
        while curr != None:
            cnt+=1
            curr = curr.next
        if cnt < k:
            return head
        prev,newHead = self.reverse(head,k)
        head.next = self.reverseKGroup(newHead,k)
        return prev
    
    def reverse(self,head,k):
        prev,curr,nxt = None,head, head
        while k > 0:
            nxt = curr.next
            curr.next = prev
            prev = curr
            curr = nxt
            k-=1
        return (prev,curr)
            

Last updated

Was this helpful?