Menu
CoddyTech

Split Array Largest Sum

ניתן לך מערך nums של מספרים שלמים שאינם שליליים ומספר שלם k. חלק את nums ל־k חלקים בדיוק, כאשר כל חלק הוא רצף לא ריק של ערכים סמוכים והחלקים שומרים על הסדר שלהם. לכל חלק יש סכום, והעלות של החלוקה היא הגדול מבין הסכומים האלה.

החזר את העלות הקטנה ביותר שניתן להשיג בכל חלוקה ל־k חלקים.

פונקציה

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
הערכים שאינם שליליים, לפי הסדר
kinteger
מספר החלקים הרציפים שאליהם יש לחתוך אותם
מחזירהinteger
הערך הקטן ביותר האפשרי של סכום החלק הגדול ביותר

אילוצים

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • כל חלק מכיל לפחות ערך אחד. סכום הערכים בחלק שכל ערכיו הם 0 הוא 0, וזה מותר.

דוגמאות

קלט
nums = [6, 2, 9, 4, 7, 3]k = 3
פלט
13
הסבר
לפיצול [6, 2], [9, 4], [7, 3] יש סכומים 8, 13 ו־10, ולכן העלות שלו היא 13. אין פיצול שעלותיו 12: אריזת החלקים משמאל לימין כך שכל סכום יהיה לכל היותר 12 נותנת [6, 2], [9], [4, 7], [3] — ארבעה חלקים, כשרק שלושה מותרים.

lock icon+20 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

כל בדיקה חמדנית קוראת את כל ערכי n. בעזרת סכומי קידומות, בדיקה יכולה למצוא היכן כל חלק מסתיים באמצעות חיפוש בינארי. כמה מהר פועלת השיטה כולה כאשר k קטן ו-nums ארוך?

איפוס הקוד
def splitArray(nums, k):
    # כתבו כאן את הקוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

nums = [6, 2, 9, 4, 7, 3]
k = 3

צפוי

13