LeetCode Problem

How to Solve Merge Two Sorted Lists

This problem requires merging two sorted linked lists by manipulating pointers. It can be solved using iteration or recursion. Both approaches rely on the pattern of linked-list pointer manipulation, with careful handling of the node comparisons.

GhostInterview Help

Need help with Merge Two Sorted Lists without spending extra time grinding it?

GhostInterview can read Merge Two Sorted Lists 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 #21Linked-list pointer manipulationReviewed 2026-03-08
Difficulty
Easy
Primary pattern
Linked-list pointer manipulation
Answer-first problem summary
Step-by-step approach and complexity
GhostInterview solver workflow

This problem requires merging two sorted linked lists by manipulating pointers. It can be solved using iteration or recursion. Both approaches rely on the pattern of linked-list pointer manipulation, with careful handling of the node comparisons.

Problem Statement

You are given the heads of two sorted linked lists, list1 and list2. Your task is to merge the two lists into one sorted list. The merged list should be created by splicing together the nodes of list1 and list2.

Return the head of the newly merged sorted linked list. The lists are sorted in non-decreasing order, and the nodes are to be merged efficiently by manipulating their pointers.

Examples

Example 1

Input: list1 = [1,2,4], list2 = [1,3,4]

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

Example details omitted.

Example 2

Input: list1 = [], list2 = []

Output: []

Example details omitted.

Example 3

Input: list1 = [], list2 = [0]

Output: [0]

Example details omitted.

Constraints

  • The number of nodes in both lists is in the range [0, 50].
  • -100 <= Node.val <= 100
  • Both list1 and list2 are sorted in non-decreasing order.

Solution Approach

Iterative Approach

Start with a dummy node, and iterate through both lists. At each step, compare the nodes from list1 and list2, appending the smaller node to the new list. This continues until all nodes from both lists are processed.

Recursive Approach

Using recursion, compare the first node of list1 with the first node of list2. Recursively merge the rest of the lists, choosing the smaller node first. The base case handles when either list is empty.

Time and Space Considerations

Both iterative and recursive approaches have similar time complexity of O(n + m), where n and m are the lengths of list1 and list2. Space complexity for the iterative approach is O(1), while the recursive approach uses O(n + m) space due to the call stack.

Complexity Analysis

MetricValue
TimeDepends on the final approach
SpaceDepends on the final approach

The time complexity for both approaches is O(n + m), where n and m are the lengths of the two lists. The space complexity for the iterative approach is O(1), while for recursion, it is O(n + m) because of the recursion stack.

What Interviewers Usually Probe

  • Look for understanding of pointer manipulation and its impact on time and space complexity.
  • Evaluate the candidate's grasp of recursion and how it compares to iteration in this context.
  • Assess the candidate's ability to handle edge cases, such as empty lists or lists of different lengths.

Common Pitfalls or Variants

Common pitfalls

  • Failing to handle the case where one list is empty.
  • Incorrectly managing pointer updates when merging nodes.
  • Not optimizing for space by using an iterative approach when recursion could lead to stack overflow.

Follow-up variants

  • Merging more than two lists.
  • Merging lists of different sizes while maintaining performance.
  • Handling negative numbers or different data types in the nodes.

How GhostInterview Helps

  • GhostInterview helps by providing direct feedback on the efficiency of pointer manipulation techniques in solving this problem.
  • Our solver suggests optimal recursive and iterative approaches tailored to merge two sorted lists effectively.
  • GhostInterview ensures you can handle edge cases and adapt solutions to a range of problem variants, focusing on performance and correctness.

Topic Pages

FAQ

How do I efficiently merge two sorted linked lists?

Use linked-list pointer manipulation, iterating through both lists and selecting the smaller node at each step, or apply recursion to merge them.

What is the time complexity of merging two sorted linked lists?

The time complexity is O(n + m), where n and m are the lengths of the two lists being merged.

Is recursion or iteration better for merging two sorted lists?

Both approaches have O(n + m) time complexity, but recursion uses additional space for the call stack, whereas iteration can be more space-efficient.

Can the iterative solution handle empty lists?

Yes, the iterative solution can handle empty lists by checking for null pointers before performing comparisons.

What happens if the lists have different lengths?

The algorithm continues comparing the remaining nodes of the longer list after one list is exhausted, efficiently merging the remaining nodes.

GhostInterview Solver

Need direct help with Merge Two Sorted Lists instead of spending more time grinding it?

Download GhostInterview when you want a LeetCode solver, not another long practice loop. Capture Merge Two Sorted Lists 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.