Menu
CoddyTech

Split Array Largest Sum

Du erhältst ein Array nums aus nicht negativen Ganzzahlen und eine Ganzzahl k. Teile nums in genau k Teile auf, wobei jeder Teil ein nicht leerer zusammenhängender Abschnitt ist und die Teile ihre Reihenfolge beibehalten. Jeder Teil hat eine Summe, und die Kosten einer Aufteilung entsprechen der größten dieser Summen.

Gib die kleinsten Kosten zurück, die bei einer Aufteilung in k Teile erreicht werden können.

Funktion

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
die nicht negativen Werte, der Reihe nach
kinteger
die Anzahl zusammenhängender Teile, in die sie zerschnitten werden sollen
Gibt zurückinteger
der kleinstmögliche Wert der größten Teilsumme

Einschränkungen

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Jeder Teil enthält mindestens einen Wert. Ein Teil, dessen Werte alle 0 sind, ergibt in der Summe 0, was zulässig ist.

Beispiele

Eingabe
nums = [6, 2, 9, 4, 7, 3]k = 3
Ausgabe
13
Erklärung
Die Aufteilung [6, 2], [9, 4], [7, 3] kostet 13. Keine Aufteilung kostet 12: Wenn die Teile von links nach rechts unter 12 gepackt werden, ergibt das [6, 2], [9], [4, 7], [3], vier Teile.
challenge icon

Weiterführende Frage

Mit Präfixsummen kann eine Greedy-Prüfung per binärer Suche ermitteln, wo jeder Teil endet. Wie schnell wird das gesamte Verfahren, wenn k klein ist?

Code zurücksetzen
def splitArray(nums, k):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

13