Course Completion Order
Problem statement
There are numCourses courses numbered from 0 through numCourses - 1. For this exercise, assume each pair [course, prerequisite] means the prerequisite must be completed before that course.
Return an order that completes every course exactly once after its prerequisites. For deterministic practice output, assume that at each step you must select the smallest ID among the currently available incomplete courses.
Return an empty list if completing every course is impossible because of a cycle. Zero courses also returns an empty list. Repeated prerequisite pairs do not change which orders are valid.
The interview report names Course Schedule II with a minor tweak but does not describe that tweak. These inputs, failure behavior, and tie rule define the authored practice version.
Function
courseOrder(numCourses: int, prerequisites: int[][]) → int[]Examples
Example 1
numCourses = 4prerequisites = [[2,0],[2,1],[3,2]]return = [0,1,2,3]Courses 0 and 1 are initially available; choose 0 then 1, which unlocks 2, then 3.
Example 2
numCourses = 3prerequisites = [[0,1],[1,0]]return = []Courses 0 and 1 depend on one another. Completing only course 2 does not yield a full order.
Example 3
numCourses = 3prerequisites = []return = [0,1,2]Every course is initially available, so the tie rule chooses increasing IDs.
Constraints
- For this exercise, assume
0 <= numCourses <= 200and0 <= prerequisites.length <= 1000. - Each prerequisite pair has two IDs in
[0, numCourses); whennumCoursesis zero, the pair list is empty. - Cycles, self-dependencies, and repeated pairs are permitted.