Menu
CoddyTech

Course Schedule

Có numCourses khóa học, được đánh số từ 0 đến numCourses-1. Mỗi cặp [a, b] trong prerequisites có nghĩa là bạn phải hoàn thành khóa học b trước khi bắt đầu khóa học a. Trả về true nếu có thứ tự giúp bạn hoàn thành tất cả các khóa học, và false nếu không có thứ tự nào như vậy.

Hàm

canFinish(numCourses: integer, prerequisites: integer-2d-array) → boolean
numCoursesinteger
số lượng khóa học
prerequisitesinteger-2d-array
các cặp [a, b], mỗi cặp có nghĩa là khóa học b đứng trước khóa học a
Trả vềboolean
true nếu có thể hoàn thành mọi khóa học, false nếu không

Ràng buộc

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • Mỗi cặp [a, b] thỏa mãn 0 ≤ a, b < numCourses.
  • Không có cặp nào xuất hiện hai lần.
  • Một cặp có thể ghi tên cùng một khóa học hai lần, [a, a]. Khóa học đó cần chính nó trước, nên không thể học được.

Ví dụ

Đầu vào
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
Đầu ra
true
Giải thích
Khóa học 0 không có điều kiện tiên quyết, nên bạn học khóa đó trước. Nhờ vậy, khóa học 1 không còn điều kiện tiên quyết, rồi đến khóa học 2 và 3, vì thế thứ tự 0, 1, 2, 3 là phù hợp.
challenge icon

Câu hỏi mở rộng

Bạn có thể học bao nhiêu khóa học tùy ý trong một học kỳ, miễn là bạn đã hoàn thành các khóa học tiên quyết trong những học kỳ trước. Cần ít nhất bao nhiêu học kỳ để học hết mọi khóa học?

Đặt lại code
def canFinish(numCourses, prerequisites):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Đối số

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

Đầu ra mong đợi

true