13. Reverse Linked List
easyAsked at NubankReverse a singly linked list in-place; Nubank treats this as a pointer-discipline screen before harder ledger-traversal questions.
By Alex Chen, Founder, InterviewChamp.AI · Last verified
Problem
Given the head of a singly linked list, reverse the list and return the new head. Solve it both iteratively and (optionally) recursively.
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 copy
Push all node values onto a stack, then pop into a new list.
- Time
- O(n)
- Space
- O(n)
function reverseList(head){ const s=[]; for(let c=head;c;c=c.next) s.push(c.val); let d={next:null},t=d; while(s.length){ t.next={val:s.pop(),next:null}; t=t.next;} return d.next; }Tradeoff:
2. Iterative pointer flip
Walk the list once, flipping each node's next pointer to its prev. O(1) extra 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:
Nubank-specific tips
Nubank expects the in-place iterative version and will push on edge cases (empty, single-node); say out loud what each pointer means.
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 Nubank interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.
Practice these live with InterviewChamp.AI →