Reverse Nodes in k-Group
Try to solve the Reverse Nodes in k-Group problem.
Statement
The task is to reverse the nodes in groups of in a given linked list, where is a positive integer, and at most the length of the linked list. If any remaining nodes are not part of a group of , they should remain in their original order.
It is not allowed to change the values of the nodes in the linked list. Only the order of the nodes can be modified.
Note: Use only extra memory space.
Constraints:
Let n
be the number of nodes in a linked list.
-
k
n
-
Node.value
Examples
Understand the problem
Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps you check if you’re solving the correct problem:
Reverse Nodes in k-Group
What is the output if the following head of the linked list and value of are given as input?
head → 8 → 0 → 6 → 1 → 0 → 7 → 8 → 7 → 5 → 3 → 5 → 2 → 4 → 9 → NULL
k = 3
head → 1 → 0 → 7 → 8 → 0 → 6 → 3 → 5 → 2 → 8 → 7 → 5 → 4 → 9 → NULL
head → 7 → 0 → 1 → 6 → 0 → 8 → 2 → 5 → 3 → 5 → 7 → 8 → 4 → 9 → NULL
head → 6 → 0 → 8 → 7 → 0 → 1 → 5 → 7 → 8 → 2 → 5 → 3 → 4 → 9 → NULL
head → 8 → 0 → 0 → 1 → 6 → 7 → 8 → 7 → 5 → 3 → 5 → 9 → 4 → 2 → NULL
Figure it out!
We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.
Try it yourself
Implement your solution in the following coding playground. We’ve provided some useful code templates that you may build on to solve this problem.
// Definition for a Linked List node// type ListNode struct {// Val int// Next *ListNode// }package mainimport (. "golang-test-code/ds_v1/LinkedList")func reverseKGroups(head *ListNode, k int) *ListNode {// Replace this placeholder return statement with your codereturn new(ListNode)}