Menu
CoddyTech

Task Scheduler

ניתנת לך מחרוזת של אותיות גדולות באנגלית בשם tasks, אות אחת לכל משימה, ומספר שלם n. מעבד מריץ משימה אחת בכל יחידת זמן, בכל סדר שתבחר, או נשאר במצב המתנה במשך יחידה אחת.

בין שתי הרצות של אותה אות צריכות להיות לפחות n יחידות זמן: אות שהורצה ביחידה t יכולה לרוץ שוב לכל המוקדם ביחידה t+n+1. החזר את מספר יחידות הזמן הקטן ביותר הדרוש להרצת כל המשימות.

פונקציה

leastInterval(tasks: string, n: integer) → integer
tasksstring
המשימות, אות גדולה אחת לכל משימה
ninteger
המספר הקטן ביותר של יחידות בין שתי הופעות של אותה אות
מחזירהinteger
מספר היחידות הקטן ביותר, כולל יחידות סרק

אילוצים

  • 1 ≤ tasks.length ≤ 104
  • tasks מכיל רק את האותיות הגדולות A עד Z.
  • 0 ≤ n ≤ 100

דוגמאות

קלט
tasks = "CACBAC"n = 2
פלט
7
הסבר
C רץ שלוש פעמים עם שתי יחידות בין הריצות, לכן הריצות שלו לבדן משתרעות על פני 7 יחידות. הסדר C A B C A, המתנה, C ממלא את הפערים ב-A וב-B ודורש יחידת המתנה אחת: 7.
challenge icon

שאלת המשך

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

איפוס הקוד
def leastInterval(tasks, n):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

tasks = "CACBAC"
n = 2

הפלט הצפוי

7