FastPrepCourse Completion Order

Course Completion Order

Indeed logoIndeed● MediumFULLTIMEPHONE SCREEN
Learn

Problem statement

There are numCourses courses numbered from 0 through numCourses - 1. For this exercise, assume each pair [course, prerequisite] means the prerequisite must be completed before that course.

Return an order that completes every course exactly once after its prerequisites. For deterministic practice output, assume that at each step you must select the smallest ID among the currently available incomplete courses.

Return an empty list if completing every course is impossible because of a cycle. Zero courses also returns an empty list. Repeated prerequisite pairs do not change which orders are valid.

The interview report names Course Schedule II with a minor tweak but does not describe that tweak. These inputs, failure behavior, and tie rule define the authored practice version.

Function

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

Examples

Example 1

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

Courses 0 and 1 are initially available; choose 0 then 1, which unlocks 2, then 3.

Example 2

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

Courses 0 and 1 depend on one another. Completing only course 2 does not yield a full order.

Example 3

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

Every course is initially available, so the tie rule chooses increasing IDs.

Constraints

  • For this exercise, assume 0 <= numCourses <= 200 and 0 <= prerequisites.length <= 1000.
  • Each prerequisite pair has two IDs in [0, numCourses); when numCourses is zero, the pair list is empty.
  • Cycles, self-dependencies, and repeated pairs are permitted.

More Indeed problems

See Indeed hiring insights
public int[] courseOrder(int numCourses, int[][] prerequisites) {
    // Write your code here.
    return new int[0];
}
numCourses4
prerequisites[[2,0],[2,1],[3,2]]
expected[0,1,2,3]
Checking account…