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, וקורס 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