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
נכון אם אפשר לסיים כל קורס, אחרת לא נכון

אילוצים

  • 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