FastPrepCourse Schedule Feasibility

Course Schedule Feasibility

Microsoft logoMicrosoft● MediumFULLTIMEONSITE INTERVIEW
Learn

Problem statement

There are numCourses courses labeled from 0 through numCourses - 1. Each pair [course, prerequisite] means the prerequisite must be completed before that course. Return true if every course can be completed in some order, or false if the dependencies contain a cycle.

Courses without prerequisites may be taken at any time. The result asks only whether a complete order exists; do not return the order itself.

Function

canFinishCourses(numCourses: int, prerequisites: int[][]) → boolean

Examples

Example 1

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

Take course 0 before course 1.

Example 2

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

Each course requires the other first, so neither can be completed.

Example 3

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

The dependency chain 0 → 1 → 2 completes all three courses.

Constraints

  • 1 <= numCourses <= 2000
  • 0 <= prerequisites.length <= 5000
  • Each prerequisite pair has exactly two course indices in [0, numCourses - 1].
  • Prerequisite pairs are unique. A self-dependency is a cycle.

More Microsoft problems

See Microsoft hiring insights
public boolean canFinishCourses(int numCourses, int[][] prerequisites) {
    // Write your code here
}
numCourses2
prerequisites[[1,0]]
expectedtrue
Checking account…