Menu
CoddyTech

Course Schedule

Есть numCourses курсов, пронумерованных от 0 до numCourses-1. Каждая пара [a, b] в prerequisites означает, что нужно закончить курс 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, который открывает возможность пройти курсы 2 и 3, так что порядок 0, 1, 2, 3 подходит.
challenge icon

Дополнительный вопрос

За один семестр можно пройти любое количество курсов, если предварительные требования для каждого курса были выполнены в предыдущих семестрах. Каково минимальное количество семестров, за которое можно пройти все курсы?

Сбросить код
def canFinish(numCourses, prerequisites):
    # Напишите код здесь

Тест #1

Тест #2

Аргументы

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

Ожидаемый вывод

true