Imagine you're a college student planning your course schedule for graduation. You need to take numCourses different courses, numbered from 0 to numCourses - 1. However, some courses have prerequisites - you must complete certain courses before taking others.
You're given an array prerequisites where each element [a, b] means you must take course b before you can take course a. For example, [0, 1] means you need to complete course 1 first before taking course 0.
Your goal: Determine if it's possible to finish all courses without getting stuck in impossible prerequisite loops. Return true if you can complete all courses, false otherwise.
This is essentially asking: "Does the prerequisite dependency graph contain a cycle?" If there's a cycle, it's impossible to satisfy all prerequisites.
Input & Output
Visualization
Time & Space Complexity
Visit each vertex once and traverse each edge once, where V=numCourses, E=prerequisites
Adjacency list storage plus recursion stack depth
Constraints
- 1 โค numCourses โค 2000
- 0 โค prerequisites.length โค 5000
- prerequisites[i].length == 2
- 0 โค ai, bi < numCourses
- All the pairs prerequisites[i] are unique