Problem · Graph

Course Schedule II

Learn this problem
MediumWalmart logoWalmartFULLTIMEONSITE INTERVIEW

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 <= 2000
  • 0 <= 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.

More Walmart problems

drafts saved locally
public int[] findOrder(int numCourses, int[][] prerequisites) {
  // write your code here
}
numCourses2
prerequisites[[1, 0]]
expected[0, 1]
checking account