Reverse every K-element Sub-list (medium)

Problem Statement #

Given the head of a LinkedList and a number ‘k’, reverse every ‘k’ sized sub-list starting from the head.

If, in the end, you are left with a sub-list with less than ‘k’ elements, reverse it too.

Created with Fabric.js 1.6.0-rc.1 Original List: Example: head head 1 2 3 4 5 6 7 8 null 3 2 1 6 5 4 8 7 null k=3 Reversed Sub-list:

Try it yourself #

Try solving this question here:

Output

0.473s

Nodes of original LinkedList are: 1 2 3 4 5 6 7 8 Nodes of reversed LinkedList are: 1 2 3 4 5 6 7 8

Solution #

The problem follows the In-place Reversal of a LinkedList pattern and is quite similar to Reverse a Sub-list. The only difference is that we have to reverse all the sub-lists. We can use the same approach, starting with the first sub-list (i.e. p=1, q=k) and keep reversing all the sublists of size ‘k’.

Code #

Most of the code is the same as Reverse a Sub-list; only the highlighted lines have a majority of the changes:

Output

0.522s

Nodes of original LinkedList are: 1 2 3 4 5 6 7 8 Nodes of reversed LinkedList are: 3 2 1 6 5 4 8 7

Time complexity #

The time complexity of our algorithm will be O(N)O(N) where ‘N’ is the total number of nodes in the LinkedList.

Space complexity #

We only used constant space, therefore, the space complexity of our algorithm is O(1)O(1).

Mark as Completed
←    Back
Reverse a Sub-list (medium)
Next    →
Problem Challenge 1