FastPrepCourse Schedule II

Course Schedule II

Bloomberg LP logoBloomberg LP● MediumNEW GRADONSITE INTERVIEW
Learn

Problem statement

There are numCourses courses labeled from 0 to numCourses - 1. Each pair [course, prerequisite] means the prerequisite must be completed before the course.

Return the lexicographically smallest course ordering that satisfies every prerequisite. If no valid ordering exists, return an empty array.

Function

findCourseOrder(numCourses: int, prerequisites: int[][]) → int[]

Examples

Example 1

numCourses = 2prerequisites = [[1,0]]return = [0,1]

Course 0 must appear before course 1.

Example 2

numCourses = 4prerequisites = [[1,0],[2,0],[3,1],[3,2]]return = [0,1,2,3]

After course 0, courses 1 and 2 are both available, so lexicographic order chooses 1.

Example 3

numCourses = 2prerequisites = [[1,0],[0,1]]return = []

The two courses form a cycle, so no complete ordering exists.

Constraints

  • 1 <= numCourses <= 2000.
  • 0 <= prerequisites.length <= 5000.
  • prerequisites[i].length == 2.
  • 0 <= course, prerequisite < numCourses.
  • Every prerequisite pair is unique, and a course is never its own prerequisite.

More Bloomberg LP problems

See Bloomberg LP hiring insights
public int[] findCourseOrder(int numCourses, int[][] prerequisites) {
  // write your code here
}
numCourses2
prerequisites[[1,0]]
expected[0,1]
Checking account…