Reverse Nodes in k-Group

IF
AlgoAxiomStaff Engineers
JSTS
Hard20 mins

Given the head of a linked list, reverse the nodes of the list k at a time, and return the modified list.

k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then the remaining nodes at the end should remain as-is.

You may not alter the values in the list's nodes, only nodes themselves may be changed.

Examples

Example 1:

Input: head = [1,2,3,4,5], k = 2

Output: [2,1,4,3,5]

Explanation: Reverse in groups of 2: [1,2] becomes [2,1], [3,4] becomes [4,3], and [5] stays.

Example 2:

Input: head = [1,2,3,4,5], k = 3

Output: [3,2,1,4,5]

Explanation: Reverse in groups of 3: [1,2,3] becomes [3,2,1], and [4,5] stays (fewer than k nodes).

Example 3:

Input: head = [1,2,3,4,5], k = 1

Output: [1,2,3,4,5]

Explanation: Groups of 1 require no reversal.

Constraints

  • The number of nodes in the list is n
  • 1 <= k <= n <= 5000
  • 0 <= Node.val <= 1000
Source: In-Place Manipulation of a Linked List pattern — AlgoAxiom
JavaScript
Test Case 1
root = [1, 2, 3]
Test Case 2
root = [1, 2, 3, 4, 5]
Idle