AlgoMaster Logo

Reverse Nodes in k-Group

values=[1, 2, 3, 4, 5],k=2
1public ListNode reverseKGroup(ListNode head, int k) {
2    if (head == null || k == 1) return head;
3
4    ListNode dummy = new ListNode(0);
5    dummy.next = head;
6
7    // Count total nodes
8    ListNode curr = dummy;
9    int count = 0;
10    while (curr.next != null) {
11        curr = curr.next;
12        count++;
13    }
14
15    ListNode prev = dummy;
16
17    // Reverse every k-group
18    while (count >= k) {
19        curr = prev.next;
20        ListNode next = curr.next;
21
22        // Reverse k-1 times
23        for (int i = 1; i < k; i++) {
24            curr.next = next.next;
25            next.next = prev.next;
26            prev.next = next;
27            next = curr.next;
28        }
29
30        prev = curr;
31        count -= k;
32    }
33
34    return dummy.next;
35}
0 / 25
0dummy12345head
DSA Animation | AlgoMaster.io | AlgoMaster.io