Course Order

medium · graph, topological-sort

Course Order

You are given numCourses labeled from 0 to numCourses-1 and a list of prerequisite pairs. Each pair [a, b] means you must take course b before course a.

Return any valid order to complete all courses. If it's impossible, return an empty list.

Function signature

func FindOrder(numCourses int, prerequisites [][]int) []int

Examples

Example 1:

Input: numCourses = 2, prerequisites = [[1,0]]
Output: [0,1]

Example 2:

Input: numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]]
Output: [0,2,1,3]
Explanation: [0,1,2,3] is also valid.

Example 3:

Input: numCourses = 2, prerequisites = [[1,0],[0,1]]
Output: []

Constraints

  • 1 <= numCourses <= 10^5
  • 0 <= prerequisites.length <= 2*10^5
  • 0 <= a, b < numCourses

Hints

  1. This is topological sorting of a directed graph.
  2. Use Kahn's algorithm (queue of in-degree zero nodes).
  3. If you cannot output numCourses nodes, there is a cycle.

Notes

  • Any valid ordering is acceptable.
  • Returning an empty list indicates no feasible ordering exists.
Run tests to see results
No issues detected