206. Reverse Linked List
easyAsked at Goldman SachsReverse a singly linked list iteratively and recursively. Goldman Sachs uses Reverse Linked List as the canonical 'do you understand pointer manipulation' question — they ask for both the iterative and recursive versions in the same round.
By Alex Chen, Founder, InterviewChamp.AI · Last verified
Source citations
Public interview reports confirming this problem appears in Goldman Sachs loops.
- Glassdoor (2026-Q1)— Goldman Sachs SWE candidate reports list Reverse Linked List as the most-asked linked-list question, often paired with 'now write it recursively'.
- LeetCode Discuss (2025-11)— Reverse Linked List is in the top-10 of LeetCode's Goldman Sachs company tag.
Problem
Given the head of a singly linked list, reverse the list, and return the reversed list. Follow up: A linked list can be reversed either iteratively or recursively. Could you implement both?
Constraints
The number of nodes in the list is the range [0, 5000].-5000 <= Node.val <= 5000
Examples
Example 1
head = [1,2,3,4,5][5,4,3,2,1]Example 2
head = [1,2][2,1]Example 3
head = [][]Approaches
1. Iterative with three pointers (optimal)
Walk the list with prev, cur, next pointers. Reverse each node's next pointer in place.
- Time
- O(n)
- Space
- O(1)
function reverseList(head) {
let prev = null;
let cur = head;
while (cur !== null) {
const next = cur.next;
cur.next = prev;
prev = cur;
cur = next;
}
return prev;
}Tradeoff: O(n) time, O(1) space. The order of operations (capture next BEFORE rewriting cur.next) is the part Goldman is grading — flip the order and the list breaks.
2. Recursive (bottom-up)
Recurse to the end; on the way back up, rewire each node's next pointer to its predecessor.
- Time
- O(n)
- Space
- O(n)
function reverseListRec(head) {
if (head === null || head.next === null) return head;
const newHead = reverseListRec(head.next);
head.next.next = head;
head.next = null;
return newHead;
}Tradeoff: Linear time at O(n) stack space. The 'head.next.next = head' line trips most candidates — it means 'the node after me should now point back to me'. Goldman wants you to verbalize that exact thought.
Goldman Sachs-specific tips
Goldman Sachs interviewers will almost always ask for BOTH the iterative and recursive versions on this one. Show them both even if only one is requested — it signals depth. The capture-next-first detail in the iterative version is what they're grading; reversing the order silently breaks the list and demonstrates you don't understand pointer aliasing.
Common mistakes
- Forgetting to capture the next pointer before rewriting cur.next — leaks the rest of the list.
- Returning head instead of prev in the iterative version — head now points to NULL at end.
- In the recursive version, forgetting head.next = null on the last rewire, which creates a cycle.
Follow-up questions
An interviewer at Goldman Sachs may pivot to one of these next:
- Reverse a subset: reverse nodes from position m to n (Reverse Linked List II, LC #92).
- Reverse in groups of k (LC #25 Reverse Nodes in k-Group).
- Detect a cycle (LC #141 Linked List Cycle) — sometimes asked back-to-back to test pointer fluency.
Solve it now
Free. No sign-up. Python and JavaScript run instantly in your browser.
FAQ
Which version does Goldman prefer?
Both. Senior interviewers tend to default to iterative because it's O(1) space and clearer for production code; new-grad rounds often start with recursion to test base-case fluency. Be ready with both — they take 2 minutes apiece once warmed up.
What's the most common bug?
Forgetting to capture cur.next before rewriting it. The line 'const next = cur.next' must come BEFORE 'cur.next = prev' — flip them and you immediately lose the tail of the list.
Free learning resources
Curated free links for this problem.
Practice these live with InterviewChamp.AI
Drill Reverse Linked List and other Goldman Sachs interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.
Practice these live with InterviewChamp.AI →