Course Schedule
Problem Description
There are numCourses courses (0 to numCourses-1). Some courses have prerequisites: [a,b] means you must take b before a. Return true if you can finish all courses, false if there's a cycle.
Example 1:
Input: numCourses=2, prerequisites=[[1,0]]
Output: true
Example 2:
Input: numCourses=2, prerequisites=[[1,0],[0,1]]
Output: false (cycle: 0→1→0)
DE Shaw Tier 2 — LC 207.
Two approaches:
1. BFS Topological Sort (Kahn's): track in-degrees. Process nodes with in-degree 0. If all nodes processed → no cycle.
2. DFS cycle detection: node states — unvisited/visiting/visited. If we hit a 'visiting' node, there's a back edge (cycle).
Example Test Cases
Example 1
Input: [2,[[1,0]]]
Expected: true
Example 2
Input: [2,[[1,0],[0,1]]]
Expected: false
Example 3
Input: [1,[]]
Expected: true
Example 4
Input: [4,[[1,0],[2,1],[3,2],[1,3]]]
Expected: false
Run your code to see the results