Menu
CoddyTech

Course Schedule

numCourses 個のコースがあり、番号は 0 から numCourses-1 までです。prerequisites 内の各ペア [a, b] は、コース a を始める前にコース b を修了する必要があることを意味します。すべてのコースを修了できる順序が存在する場合は 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 です。
  • 同じペアは2回現れません。
  • 1組のペアで、同じコースを2回指定することがあります。[a, a]。そのコースは自分自身を先に受講する必要があるため、受講することはできません。

例

入力
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
出力
true
説明
コース0には前提条件がないため、まず履修します。これによりコース1を履修できるようになり、さらに2と3も履修できるようになるので、0、1、2、3の順序で問題ありません。
challenge icon

発展問題

各科目の前提科目をそれ以前の学期に修了していれば、1学期にいくつでも科目を履修できます。すべての科目を履修するのに必要な学期数の最小はいくつですか?

コードをリセット
def canFinish(numCourses, prerequisites):
    # ここにコードを書いてください

テスト #1

テスト #2

引数

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

期待される出力

true