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回現れることはありません。
  • ペアには、同じコースが2回指定されることがあります([a, a])。そのコースを受講するには、先にそのコース自体を受講する必要があるため、決して受講できません。

例

入力
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
出力
true
説明
コース 0 には前提条件がないので、最初に受講します。そうするとコース 1 を受講でき、コース 1 を受講すると 2 と 3 の両方を受講できるので、0、1、2、3 の順序で問題ありません。

lock icon提出時に隠しテスト+20件

challenge icon

発展問題

各学期には、各コースの前提条件がそれより前の学期に修了していれば、何科目でも履修できます。すべてのコースを履修するのに必要な学期数の最小値はいくつですか?

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

ケース1

ケース2

入力

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

期待値

true