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] עולה 13. אין חלוקה שעולה 12: אריזת החלקים משמאל לימין תחת מגבלת 12 נותנת [6, 2], [9], [4, 7], [3], ארבעה חלקים.
challenge icon

שאלת המשך

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

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

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

הפלט הצפוי

13