Course Schedule (Topological Sort)

viaGlassdoor

Problem: (LeetCode 207 - Course Schedule) There are numCourses courses labeled 0 to numCourses-1. Given prerequisite pairs [a, b] meaning you must take course b before course a, determine if it's possible to finish all courses.

Constraints: Up to 10^5 courses and prerequisite pairs.

Example: Input: numCourses=2, prerequisites=[[1,0]] Output: true (take course 0, then course 1) Input: numCourses=2, prerequisites=[[1,0],[0,1]] Output: false (cycle)

Approach: Model courses as a directed graph and detect whether it contains a cycle. Use topological sort via Kahn's algorithm (BFS): compute in-degree for each node, repeatedly remove zero-in-degree nodes and decrement neighbors' in-degrees; if all nodes are eventually removed, no cycle exists (true), otherwise a cycle remains (false). Alternatively use DFS with a recursion-stack visited set to directly detect back-edges (cycles). Runs in O(V+E).

Add a follow-up question they asked
No follow-ups yet. Be the first to add one.
asked …
LeaderboardSalary
Language
Account