Menu
CoddyTech

Maximum Subarray

On vous donne une liste d’entiers nums. Un sous-tableau est une suite d’éléments voisins, sans interruption, et il doit contenir au moins un élément. Renvoyez la plus grande somme que peut avoir un sous-tableau de nums. Vous renvoyez uniquement la somme, pas le sous-tableau lui-même.

Fonction

maxSubArray(nums: integer-array) → integer
numsinteger-array
la liste d’entiers, avec au moins un élément
Renvoieinteger
la plus grande somme d’une séquence non vide d’éléments adjacents

Contraintes

  • 1 ≤ nums.length ≤ 105
  • -104 ≤ nums[i] ≤ 104
  • La réponse tient toujours dans un entier signé de 32 bits.

Exemples

Entrée
nums = [2, -4, 3, -1, 5, -6, 1]
Sortie
7
Explication
La séquence [3, -1, 5] totalise 7. En l'étendant vers la gauche, on ajoute -4 puis 2, soit une perte nette de 2. En l'étendant vers la droite, on ajoute -6 puis 1, soit une perte nette de 5. Aucune autre séquence ne fait mieux.
challenge icon

Pour aller plus loin

Peux-tu aussi le résoudre par diviser pour régner en O(n log n), en scindant la liste en deux et en traitant les séquences qui traversent le milieu ?

Réinitialiser le code
def maxSubArray(nums):
    # Écrivez le code ici

Test #1

Test #2

Argument

nums = [2, -4, 3, -1, 5, -6, 1]

Résultat attendu

7