Menu
CoddyTech

Course Schedule

有 numCourses 门课,编号从 0 到 numCourses-1。prerequisites 中的每一对 [a, b] 都表示你必须先完成课程 b,才能开始课程 a。如果存在某种顺序,让你完成所有课程,就返回 true;如果不存在,就返回 false。

函数

canFinish(numCourses: integer, prerequisites: integer-2d-array) → boolean
numCoursesinteger
课程数量
prerequisitesinteger-2d-array
每一对 [a, b] 都表示课程 b 在课程 a 之前
返回值boolean
如果每门课程都能完成,则为 true,否则为 false。

约束条件

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • 每对 [a, b] 都满足 0 ≤ a, b < numCourses。
  • 不会有重复出现的配对。
  • 一对可能会把同一门课程写两次,[a, a]。这门课程需要先修它自己,因此永远无法选修。

示例

输入
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
输出
true
解释
课程 0 没有先修课程,所以你先修它。这样课程 1 就可以开始了,而课程 1 又为课程 2 和 3 腾出了空间,因此按 0、1、2、3 的顺序修课可行。
challenge icon

进阶

一个学期可以安排任意数量的课程,只要每门课的先修课程都已在更早的学期完成。修完所有课程最少需要几个学期?

重置代码
def canFinish(numCourses, prerequisites):
    # 在这里编写代码

测试 #1

测试 #2

参数

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

预期输出

true