29. Reverse Linked List
easyAsked at OlaReverse a singly linked list and return the new head.
By Alex Chen, Founder, InterviewChamp.AI · Last verified
Problem
Given the head of a singly linked list, reverse the list and return the reversed list. Try both iterative and recursive.
Constraints
Number of nodes is in [0, 5000]-5000 <= Node.val <= 5000
Examples
Example 1
head = [1,2,3,4,5][5,4,3,2,1]Example 2
head = [][]Approaches
1. Stack collect
Push every node onto a stack, then pop and re-link.
- Time
- O(n)
- Space
- O(n)
const s = []; let n = head;
while (n) { s.push(n); n = n.next; }
const dummy = { next: null }; let t = dummy;
while (s.length) { t.next = s.pop(); t = t.next; }
if (t) t.next = null;
return dummy.next;Tradeoff:
2. Iterative pointer flip
Walk with prev/curr/next pointers; flip curr.next each step. O(n) time and O(1) space.
- Time
- O(n)
- Space
- O(1)
function reverseList(head) {
let prev = null, curr = head;
while (curr) {
const next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}Tradeoff:
Ola-specific tips
Ola uses this to gauge pointer fluency; tie it to reversing a chain of dispatch hops when a trip is canceled mid-route.
Solve it now
Free. No sign-up. Python and JavaScript run instantly in your browser.
Practice these live with InterviewChamp.AI
Drill Reverse Linked List and other Ola interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.
Practice these live with InterviewChamp.AI →