Menu
CoddyTech

Split Array Largest Sum

Ti viene fornito un array nums di interi non negativi e un intero k. Dividi nums esattamente in k parti, dove ogni parte è una sequenza non vuota di valori adiacenti e le parti mantengono il loro ordine. Ogni parte ha una somma e il costo di una suddivisione è la più grande di queste somme.

Restituisci il costo minimo che è possibile ottenere con una suddivisione in k parti.

Funzione

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
i valori non negativi, in ordine
kinteger
il numero di parti contigue in cui tagliarli
Restituisceinteger
il valore più piccolo possibile della somma della parte più grande

Vincoli

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Ogni parte contiene almeno un valore. Una parte i cui valori sono tutti 0 ha somma pari a 0, il che è consentito.

Esempi

Input
nums = [6, 2, 9, 4, 7, 3]k = 3
Output
13
Spiegazione
La suddivisione [6, 2], [9, 4], [7, 3] costa 13. Nessuna suddivisione costa 12: impacchettando le parti da sinistra a destra entro 12 si ottengono [6, 2], [9], [4, 7], [3], quattro parti.
challenge icon

Per approfondire

Con le somme prefisse, un controllo greedy può trovare dove termina ogni parte tramite ricerca binaria. Quanto diventa veloce l’intero metodo quando k è piccolo?

Ripristina il codice
def splitArray(nums, k):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

13