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 aus einer nicht leeren Folge benachbarter Werte besteht und die Reihenfolge der Teile erhalten bleibt. 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 geschnitten 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] hat die Summen 8, 13 und 10, daher betragen ihre Kosten 13. Keine Aufteilung kostet 12: Packt man die Teile von links nach rechts so, dass jede Summe höchstens 12 beträgt, erhält man [6, 2], [9], [4, 7], [3] – vier Teile, obwohl nur drei erlaubt sind.

lock icon+20 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Jede Greedy-Prüfung liest alle n-Werte. Mit Präfixsummen kann eine Prüfung stattdessen per binärer Suche ermitteln, wo jeder Teil endet. Wie schnell ist die gesamte Methode, wenn k klein und nums lang ist?

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

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

13