FastPrepCourse Schedule Cycle Detection

Course Schedule Cycle Detection

Google logoGoogle● MediumINTERNNEW GRADONSITE INTERVIEW
Learn

Problem statement

There are numCourses courses labeled from 0 to numCourses - 1. You are given a list prerequisites, where prerequisites[i] = [course, prerequisite] means that prerequisite must be completed before course.

Return true if it is possible to finish every course. Otherwise, return false.

Function

canFinish(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 depends on the other, so the dependency graph contains a directed cycle.

Example 3

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

The courses can be completed in the order 0, 1, 2, 3.

Constraints

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

More Google problems

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