Explain cycle detection.
01
01
Understand the problem
graphscycle
02
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Stuck? AI Nudge Available
Get a conceptual hint to guide your logic without spoiling the final implementation.
03
03
Study the solution
The solution is waiting
Give it an honest attempt first — then compare your thinking with the full walkthrough.
04
04
Read the code
DFS with 3 colors
Run Playgrounddef has_cycle(graph, n):
# 0 = unvisited, 1 = in-progress, 2 = done
state = [0] * n
def dfs(u):
state[u] = 1
for v in graph[u]:
if state[v] == 1: # back edge -> cycle
return True
if state[v] == 0 and dfs(v):
return True
state[u] = 2
return False
return any(state[i] == 0 and dfs(i) for i in range(n))
# --- demo ---
print(has_cycle([[1], [2], [0]], 3)) # True (0->1->2->0)
print(has_cycle([[1], [2], []], 3)) # False05
05
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.