Reorder List

Asked byAmazonMicrosoftAdobeFacebookBloombergUber

Problem

Given the head of a singly linked list L0 → L1 → … → Ln-1 → Ln, reorder it in place to L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … without modifying the values in the list's nodes.

Examples

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

Constraints

  • The number of nodes is in the range [1, 5 * 10^4].

Solve it in the editor. Sign in free to run your Python or JavaScript against test cases, get a verdict, and track your attempts.

Solve on FeatCode →

How to approach it: the Linked List pattern

A chain of nodes, each pointing to the next. No random access like an array, but insertion and deletion at a known position is O(1), and many classic problems come down to careful pointer rewiring.

Look for this pattern when

  • The problem explicitly gives you a linked list (reverse it, merge lists, detect a cycle, reorder it).
  • You need O(1) insertion/deletion without shifting elements, unlike an array.

Read the full Linked List guide →

Video walkthroughs

Original problem on LeetCode ↗

More Linked List problems