Asked at

Course Schedule II

Medium
Verified
Topological SortBFSDFS~25 min

You have numCourses courses labeled 0..numCourses - 1. Each pair [a, b] in prerequisites means course b must be taken before course a.

Return any valid order in which to take all courses. If no valid order exists (a cycle), return an empty array.

The input arrives as a single object { numCourses, prerequisites }.

Examples

in{ numCourses: 2, prerequisites: [[1,0]] }
out[0, 1]

Course 0 has no prerequisite, so it comes before course 1.

in{ numCourses: 2, prerequisites: [[0,1],[1,0]] }
out[]

The two courses form a cycle, so no valid order exists.

Constraints

  • 1 ≤ numCourses ≤ 2000
  • 0 ≤ prerequisites.length ≤ 5000
  • prerequisites[i] = [a, b] means b must be taken before a
  • All prerequisite pairs are distinct.

Get help

🔑

Sign in to solve

Sign in to write, run, and submit your solution — and to pick up where your iOS flow left off.