Neural Mastery
← Practice
Course Schedule II: Topological Order Recoverymedium

Course Schedule II: Topological Order Recovery

medium Coding Interview Patterns 15–20 min

NumPy allowed · plain Python earns 10 bonus points

Interactive
Graph & Tree Traversal, Step by Step
Structure
Algorithm
ABCDE
visiting A -> visited order so far: [A]
queue now: [B, C]
Step 1 / 5
Both modes run the real algorithm from the linked practice problem, one step at a time -- edit the graph or pick different tree nodes and every step recomputes live.

Generate a valid linear sequence to complete all prerequisite courses using Kahn's topological sort.

Related Skills

Task

Implement find_course_order(numCourses, prerequisites): collect courses with zero in-degree into a queue, appending to an ordering list as dependencies are resolved.

Function Signature

find_course_order(numCourses: int, prerequisites: list[list[int]]) -> list[int]

Examples

Example 1: Diamond Dependency 4 Courses
Input: numCourses = 4 prerequisites = [[1, 0], [2, 0], [3, 1], [3, 2]]
Output: [0, 1, 2, 3]
Example 2: Cycle Returns Empty List
Input: numCourses = 2 prerequisites = [[0, 1], [1, 0]]
Output: []

Constraints

  • 1 <= numCourses <= 2000
  • 0 <= len(prerequisites) <= numCourses * (numCourses - 1)
Python3Saved ✓
def find_course_order(numCourses: int, prerequisites: list[list[int]]) -> list[int]:
"""numCourses: total courses labeled 0 to numCourses - 1.
prerequisites: list of [dest, src] (must take src before dest).
Return a valid topological order of courses to take. If impossible due to a cycle, return []."""
# Your implementation here
pass

Case 1: Diamond Dependency 4 Courses
Input: numCourses = 4 prerequisites = [[1, 0], [2, 0], [3, 1], [3, 2]]
Expected: [0, 1, 2, 3]
Case 2: Cycle Returns Empty List
Input: numCourses = 2 prerequisites = [[0, 1], [1, 0]]
Expected: []