...

/

Reorder List

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:

L0L_{0}L1L_{1}L2L_{2} → … → Ln2L_{n-2}Ln1L_{n-1}LnL_{n}

This is how you’ll reorder it:

L0L_{0}LnL_{n}L1L_{1}Ln1L_{n - 1}L2L_{2}Ln2L_{n - 2} → …

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 [1,500][1, 500].
  • 5000-5000 \leq Node.value 5000\leq 5000

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

1.

What is the output if the following linked list is given as input?

4 → 2 → 7 → 8 → 9 → 0 → 2

A.

2 → 4 → 2 → 0 → 7 → 9 → 8

B.

4 → 2 → 7 → 2 → 8 → 0 → 9

C.

9 → 0 → 2 → 8 → 4 → 2 → 7

D.

4 → 2 → 2 → 0 → 7 → 9 → 8


1 / 4

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.

Sequence - Vertical
Drag and drop the cards to rearrange them in the correct sequence.

1
2
3
4

Try it yourself

Implement your solution in the following coding playground.

Python
usercode > main.py
# Definition for a Linked List node
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
from ds_v1.LinkedList.LinkedList import ListNode
def reorder_list(head):
# Replace this placeholder return statement with your code
return head
Reorder List

Access this course and 1200+ top-rated courses and projects.