Menu
CoddyTech

Activity Selection Problem

פעילות i נמשכת מהזמן start[i] עד הזמן finish[i]. אדם אחד מבצע פעילות אחת בכל פעם, והפעילות הבאה חייבת להתחיל רק לאחר שהפעילות הקודמת מסתיימת: פעילות שמתחילה בדיוק בזמן שבו פעילות אחרת מסתיימת אינה יכולה לבוא אחריה.

החזירו את המספר המרבי של פעילויות שאדם אחד יכול לבצע.

פונקציה

maxActivities(start: integer-array, finish: integer-array) → integer
startinteger-array
שעת ההתחלה של כל פעילות
finishinteger-array
זמן הסיום של כל פעילות; finish[i] שייך ל-start[i]
מחזירהinteger
מספר הפעילויות המרבי שאדם אחד יכול לבצע, בזו אחר זו

אילוצים

  • 1 ≤ start.length == finish.length ≤ 5000
  • 0 ≤ start[i] ≤ finish[i] ≤ 105
  • פעילות עשויה להתחיל ולהסתיים באותו זמן. המערכים אינם ממוינים.

דוגמאות

קלט
start = [10, 12, 20, 14, 25, 21]finish = [13, 16, 24, 19, 30, 22]
פלט
4
הסבר
בחירה במספרים 10 עד 13, 14 עד 19, 21 עד 22 ו־25 עד 30 נותנת 4. אי אפשר להגיע לחמש: 10 עד 13 מתנגש עם 12 עד 16, ו־21 עד 22 עם 20 עד 24.
challenge icon

שאלת המשך

כעת שני אנשים עובדים במקביל, וכל אחד מבצע פעילות אחת בכל פעם. כמה פעילויות הם יכולים לבצע יחד, ומי מהם צריך לבצע כל אחת?

איפוס הקוד
def maxActivities(start, finish):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

start = [10, 12, 20, 14, 25, 21]
finish = [13, 16, 24, 19, 30, 22]

הפלט הצפוי

4