Reverse Nodes in k-Group — Recursive Group Reversal

Sanjeev SharmaSanjeev Sharma
2 min read

Advertisement

Problem 244 · Reverse Nodes in k-Group

Difficulty: Hard · Pattern: Recursive Group Reversal

Reverse every k nodes. If fewer than k remain, leave as-is.

Solutions

# Python
def reverseKGroup(head, k):
    # Check if k nodes exist
    cur = head
    for _ in range(k):
        if not cur: return head
        cur = cur.next
    # Reverse k nodes
    prev, curr = None, head
    for _ in range(k):
        nxt = curr.next; curr.next = prev; prev = curr; curr = nxt
    # head is now the tail of reversed group
    head.next = reverseKGroup(curr, k)
    return prev
// Java
public ListNode reverseKGroup(ListNode head, int k) {
    ListNode cur = head;
    for (int i = 0; i < k; i++) {
        if (cur == null) return head;
        cur = cur.next;
    }
    ListNode prev = null, curr = head;
    for (int i = 0; i < k; i++) {
        ListNode nxt = curr.next; curr.next = prev; prev = curr; curr = nxt;
    }
    head.next = reverseKGroup(curr, k);
    return prev;
}
// C++
ListNode* reverseKGroup(ListNode* head, int k) {
    ListNode* cur = head;
    for (int i = 0; i < k; i++) {
        if (!cur) return head;
        cur = cur->next;
    }
    ListNode *prev = nullptr, *curr = head;
    for (int i = 0; i < k; i++) {
        ListNode *nxt = curr->next; curr->next = prev; prev = curr; curr = nxt;
    }
    head->next = reverseKGroup(curr, k);
    return prev;
}

Complexity

  • Time: O(n)
  • Space: O(n/k) recursive stack

Advertisement

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro