LeetCode Problem

How to Solve Partition List

The problem involves partitioning a linked list around a given value x, where nodes less than x appear first. By using two pointers, one for the lower part and another for the higher part, the linked list can be reorganized in O(n) time while preserving the original relative order. The solution can be implemented by iterating through the list and adjusting pointers to create the two partitions.

GhostInterview Help

Need help with Partition List without spending extra time grinding it?

GhostInterview can read Partition List from a screenshot, generate the answer path, explain the complexity, and support solver-first interview workflows when you need direct help fast.

Screenshot Input

Capture the prompt fast instead of rewriting the problem by hand.

Answer + Complexity

Get the solution path, trade-offs, and complexity summary in one pass.

Stealth Workflow

Stay outside captured layers on supported screen-share workflows.

Problem #86Linked-list pointer manipulationReviewed 2026-03-08
Difficulty
Medium
Primary pattern
Linked-list pointer manipulation
Answer-first problem summary
Step-by-step approach and complexity
GhostInterview solver workflow

The problem involves partitioning a linked list around a given value x, where nodes less than x appear first. By using two pointers, one for the lower part and another for the higher part, the linked list can be reorganized in O(n) time while preserving the original relative order. The solution can be implemented by iterating through the list and adjusting pointers to create the two partitions.

Problem Statement

You are given the head of a linked list and an integer x. You must partition the list such that all nodes with values less than x come before nodes with values greater than or equal to x. The original relative order of the nodes should be preserved within each partition.

For example, given the list [1,4,3,2,5,2] and x = 3, the expected output would be [1,2,2,4,3,5].

Examples

Example 1

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

Output: [1,2,2,4,3,5]

Example details omitted.

Example 2

Input: head = [2,1], x = 2

Output: [1,2]

Example details omitted.

Constraints

  • The number of nodes in the list is in the range [0, 200].
  • -100 <= Node.val <= 100
  • -200 <= x <= 200

Solution Approach

Two-pointer technique

Utilize two pointers to separate nodes into two lists: one for values less than x and another for values greater than or equal to x. The first pointer traverses the list to identify nodes that should go in the 'less than x' partition, while the second pointer handles the 'greater than or equal to x' partition.

Re-linking nodes

After identifying the appropriate nodes for each partition, the lists must be re-linked together by connecting the 'less than x' partition with the 'greater than or equal to x' partition. This can be done by adjusting the next pointers of the last node in the 'less than x' partition.

Edge case handling

Consider edge cases such as an empty list or when all nodes are less than or greater than x. These cases will be handled naturally by the two-pointer approach without requiring additional logic.

Complexity Analysis

MetricValue
TimeDepends on the final approach
SpaceDepends on the final approach

The time complexity of this solution is O(n), where n is the number of nodes in the linked list, since each node is visited exactly once. The space complexity is O(1) because the solution modifies the list in place without using any additional data structures.

What Interviewers Usually Probe

  • Candidate effectively uses pointer manipulation to solve the problem.
  • Candidate correctly handles edge cases like empty lists or all nodes falling in one partition.
  • Solution demonstrates knowledge of linked-list traversal and node manipulation.

Common Pitfalls or Variants

Common pitfalls

  • Failing to preserve the relative order of nodes within each partition.
  • Incorrectly linking the 'less than x' partition to the 'greater than or equal to x' partition.
  • Not considering edge cases like empty lists or lists where all nodes fall into one partition.

Follow-up variants

  • Modify the problem to handle circular linked lists.
  • Partition the list in place using constant space.
  • Extend the problem by adding multiple partitions around different values.

How GhostInterview Helps

  • GhostInterview helps by guiding you through the two-pointer approach, ensuring you focus on linked-list pointer manipulation.
  • The solver's suggestions help you address edge cases and manage memory efficiently without introducing additional data structures.
  • GhostInterview provides step-by-step explanations for optimal solutions, helping you refine your approach and anticipate interview questions.

Topic Pages

FAQ

What is the most efficient way to partition a linked list?

The most efficient way is to use a two-pointer technique, which ensures the solution runs in O(n) time with constant space.

How can I handle edge cases like an empty list?

Edge cases like an empty list are naturally handled by the two-pointer approach, as no nodes will be processed.

What pattern is this problem based on?

This problem is based on linked-list pointer manipulation, where you manage pointers to reorder nodes into partitions.

How can I ensure the relative order is preserved?

You can ensure this by carefully separating nodes into two partitions and linking them while maintaining the original order in each partition.

Can I solve this problem without using extra space?

Yes, the problem can be solved in-place with O(1) space by manipulating the pointers of the existing nodes.

GhostInterview Solver

Need direct help with Partition List instead of spending more time grinding it?

Download GhostInterview when you want a LeetCode solver, not another long practice loop. Capture Partition List from a screenshot, get the answer path and complexity, and use supported stealth workflows that stay outside captured layers.

Screenshot Input

Capture the prompt fast instead of rewriting the problem by hand.

Answer + Complexity

Get the solution path, trade-offs, and complexity summary in one pass.

Stealth Workflow

Stay outside captured layers on supported screen-share workflows.