Reorder List
Try to solve the Reorder List problem.
Statement
Given the head of a singly linked list, reorder the list as if it were folded on itself. For example, if the list is represented as follows:
→ → → … → → →
This is how you’ll reorder it:
→ → → → → → …
You don’t need to modify the values in the list’s nodes; only the links between nodes need to be changed.
Constraints:
- The range of number of nodes in the list is .
-
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:
Reorder List
What is the output if the following linked list is given as input?
4 → 2 → 7 → 8 → 9 → 0 → 2
2 → 4 → 2 → 0 → 7 → 9 → 8
4 → 2 → 7 → 2 → 8 → 0 → 9
9 → 0 → 2 → 8 → 4 → 2 → 7
4 → 2 → 2 → 0 → 7 → 9 → 8
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.
# Definition for a Linked List node# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextfrom ds_v1.LinkedList.LinkedList import ListNodedef reorder_list(head):# Replace this placeholder return statement with your codereturn head