Menu
CoddyTech

Course Schedule

Há numCourses cursos, numerados de 0 a numCourses-1. Cada par [a, b] em prerequisites significa que você precisa concluir o curso b antes de poder começar o curso a. Retorne true se houver uma ordem em que você possa concluir todos os cursos, e false caso contrário.

Função

canFinish(numCourses: integer, prerequisites: integer-2d-array) → boolean
numCoursesinteger
o número de cursos
prerequisitesinteger-2d-array
os pares [a, b], cada um significando que o curso b vem antes do curso a
Retornaboolean
verdadeiro se todos os cursos puderem ser concluídos, falso caso contrário

Restrições

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • Cada par [a, b] satisfaz 0 ≤ a, b < numCourses.
  • Nenhum par aparece duas vezes.
  • Um par pode indicar o mesmo curso duas vezes, [a, a]. Esse curso precisa de si mesmo primeiro, então nunca poderá ser cursado.

Exemplos

Entrada
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
Saída
true
Explicação
O curso 0 não tem pré-requisitos, então você o faz primeiro. Isso libera o curso 1, e o curso 1 libera tanto o 2 quanto o 3, então a ordem 0, 1, 2, 3 funciona.

lock icon+20 testes ocultos ao enviar

challenge icon

Para ir além

Qualquer número de cursos cabe em um período, desde que os pré-requisitos de cada curso tenham sido concluídos em períodos anteriores. Qual é o menor número de períodos que abrange todos os cursos?

Redefinir código
def canFinish(numCourses, prerequisites):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Entrada

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

Esperado

true