19. Linked List Cycle
easyAsked at ZoomDetect whether a linked list contains a cycle.
By Alex Chen, Founder, InterviewChamp.AI · Last verified
Problem
Given head, the head of a linked list, return true if there is a cycle. There is a cycle if some node can be reached again by continuously following next pointers.
Constraints
0 <= nodes <= 10^4-10^5 <= Node.val <= 10^5
Examples
Example 1
Input
head=[3,2,0,-4], pos=1Output
trueExample 2
Input
head=[1], pos=-1Output
falseApproaches
1. Visited set
Track visited nodes.
- Time
- O(n)
- Space
- O(n)
const s=new Set(); for(let n=head;n;n=n.next){ if(s.has(n)) return true; s.add(n);} return false;Tradeoff:
2. Floyd's tortoise and hare
Two pointers, slow and fast; they meet inside a cycle.
- Time
- O(n)
- Space
- O(1)
function hasCycle(head) {
let slow = head, fast = head;
while (fast && fast.next) {
slow = slow.next;
fast = fast.next.next;
if (slow === fast) return true;
}
return false;
}Tradeoff:
Zoom-specific tips
Zoom uses cycle-detection mental models for their meeting-state graph (loops in reconnection logic); explain Floyd's invariants succinctly.
Solve it now
Free. No sign-up. Python and JavaScript run instantly in your browser.
Practice these live with InterviewChamp.AI
Drill Linked List Cycle and other Zoom interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.
Practice these live with InterviewChamp.AI →