Course Schedule II
Problem statement
You are given numCourses courses labeled from 0 to numCourses - 1 and a list of prerequisite pairs. Each pair [course, prerequisite] means that prerequisite must be completed before course.
Return an order in which all courses can be completed. Whenever several courses have no remaining prerequisites, choose the smallest numbered course next. If the prerequisite graph contains a cycle and completing every course is impossible, return an empty array.
Function
findOrder(numCourses: int, prerequisites: int[][]) → int[]Examples
Example 1
numCourses = 2prerequisites = [[1, 0]]return = [0, 1]Course 0 has no prerequisite. Completing it unlocks course 1.
Example 2
numCourses = 4prerequisites = [[1, 0], [2, 0], [3, 1], [3, 2]]return = [0, 1, 2, 3]After course 0, both courses 1 and 2 are available. The smaller course is chosen first.
Example 3
numCourses = 2prerequisites = [[1, 0], [0, 1]]return = []The two courses form a cycle, so no complete ordering exists.
Constraints
1 <= numCourses <= 20000 <= prerequisites.length <= 5000- Each prerequisite pair contains two distinct course labels in the range
[0, numCourses - 1]. - All prerequisite pairs are unique.
- When multiple courses are available, choose the smallest course label first.