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, а курс 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