Problem · Graph

Course Schedule

Learn this problem
MediumInMobi logoInMobiNEW GRADOA

Problem statement

There are numCourses courses numbered from 1 through numCourses.

Each pair [course, prerequisite] in prerequisites means that prerequisite must be completed before course.

Return true if it is possible to complete every course. Return false if the prerequisite relationships contain a cycle.

Function

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

Examples

Example 1

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

Course 1 requires course 2, while course 2 requires course 1, so neither can be completed first.

Example 2

numCourses = 4prerequisites = []return = true

There are no prerequisites, so all four courses can be completed in any order.

Example 3

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

One valid order is 1, 2, 3, 4.

Constraints

  • 1 <= numCourses <= 5000
  • 0 <= prerequisites.length <= min(5000, numCourses * (numCourses - 1) / 2)
  • prerequisites[i].length == 2
  • 1 <= prerequisites[i][0], prerequisites[i][1] <= numCourses
  • prerequisites[i][0] != prerequisites[i][1]
  • No prerequisite pair appears more than once.

More InMobi problems

drafts saved locally
public boolean canFinish(int numCourses, int[][] prerequisites) {
    // write your code here.
}
numCourses3
prerequisites[[1,2],[2,1]]
expectedfalse
checking account