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