Problem Overview
The "Course Schedule" problem, commonly featured in LinkedIn and LeetCode interviews under Graph, DFS, BFS, and Topological Sort tags, asks whether you can complete all courses given prerequisites. It models courses as nodes in a directed graph where edges represent prerequisites (e.g., prerequisite → course), requiring cycle detection via topological sort.[1][2][3]
There are a total of numCourses courses labeled from 0 to numCourses-1. You are given an array prerequisites where prerequisites[i] = [ai, bi] indicates you must take course bi first to take course ai. Return true if you can finish all courses, or false if there's a cycle making it impossible.[3][1]
Example 1:
Input: numCourses = 2, prerequisites = [[1,0]]
Output: true
Explanation: Must take course 0 before 1; valid order:.[1][3]
Example 2:
Input: numCourses = 2, prerequisites = [[1,0],[0,1]]
Output: false
Explanation: Cycle (0→1→0) prevents completion.[3]
Additional cases from discussions:
numCourses = 1, prerequisites = [] → true (no dependencies).numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]] → true (order: ).[2][8][1][3]1 <= numCourses <= 20000 <= prerequisites.length <= 5000prerequisites[i].length == 20 <= ai, bi < numCoursesReturn the ordering of courses (array of course IDs) if possible, or empty array [] if cycle detected. Same examples apply, with outputs like [0,1] for Example 1. Uses Kahn's BFS or DFS topological sort.[6][1]