Problem · Graph

Course Schedule

Learn this problem
MediumByteDance logoByteDanceFULLTIMEPHONE SCREEN

Problem statement

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

Return true if it is possible to complete every course. Return false when the prerequisite graph contains a directed cycle.

Function

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

Examples

Example 1

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

Course 0 can be completed before course 1.

Example 2

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

Each course requires the other first, so the graph contains a cycle.

Example 3

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

One valid completion order is 0, 1, 2, 3.

Constraints

  • 1 <= numCourses <= 2000
  • 0 <= prerequisites.length <= 5000
  • Every prerequisite pair contains two distinct valid course labels.
  • No prerequisite pair appears more than once.

More ByteDance problems

drafts saved locally
public boolean canFinish(int numCourses, int[][] prerequisites) {
    // Write your solution here
}
numCourses2
prerequisites[[1,0]]
expectedtrue
checking account