Menu
CoddyTech

Split Array Largest Sum

Vous obtenez un tableau nums d’entiers non négatifs et un entier k. Découpez nums en exactement k parties, chacune étant une séquence non vide de valeurs voisines et les parties conservant leur ordre. Chaque partie a une somme, et le coût d’un découpage est la plus grande de ces sommes.

Renvoyez le coût minimal qu’un découpage en k parties peut atteindre.

Fonction

splitArray(nums: integer-array, k: integer) → integer
numsinteger-array
les valeurs non négatives, dans l’ordre
kinteger
le nombre de parties contiguës dans lesquelles les découper
Renvoieinteger
la plus petite valeur possible de la somme de la plus grande partie

Contraintes

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 105
  • 1 ≤ k ≤ nums.length
  • Chaque partie contient au moins une valeur. Une partie dont toutes les valeurs sont égales à 0 a une somme égale à 0, ce qui est autorisé.

Exemples

Entrée
nums = [6, 2, 9, 4, 7, 3]k = 3
Sortie
13
Explication
La division en [6, 2], [9, 4], [7, 3] coûte 13. Aucune division ne coûte 12 : en regroupant les éléments de gauche à droite sans dépasser 12, on obtient [6, 2], [9], [4, 7], [3], soit quatre éléments.
challenge icon

Pour aller plus loin

Avec des sommes préfixes, une vérification gloutonne peut trouver où chaque partie se termine par recherche binaire. À quelle vitesse l’ensemble de la méthode s’exécute-t-il lorsque k est petit ?

Réinitialiser le code
def splitArray(nums, k):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

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

Résultat attendu

13