Menu
CoddyTech

Maximum Product Subarray

Multipliez entre eux les éléments d’un sous-tableau de nums, puis renvoyez le produit maximal qu’un sous-tableau peut donner. Un sous-tableau contient des éléments consécutifs, sans interruption, et n’est jamais vide : même un tableau composé de nombres négatifs a donc une réponse. Les zéros et les valeurs négatives sont autorisés.

Fonction

maxProduct(nums: integer-array) → integer
numsinteger-array
les entiers à multiplier, chacun compris entre -10 et 10
Renvoieinteger
le plus grand produit d’un sous-tableau non vide

Contraintes

  • 1 ≤ nums.length ≤ 2 × 104
  • -10 ≤ nums[i] ≤ 10
  • Le produit de chaque sous-tableau tient dans un entier signé de 32 bits.

Exemples

Entrée
nums = [2, -5, 3, -2, 0, 4]
Sortie
60
Explication
Les deux nombres négatifs s’annulent : 2 × -5 × 3 × -2 = 60. Le 0 coupe le tableau en deux, et le 4 de l’autre côté ne peut pas dépasser 60.
challenge icon

Pour aller plus loin

Comment indiquer également où commence et où se termine le meilleur sous-tableau, toujours en O(n) et avec un espace de O(1) ?

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

Test #1

Test #2

Test #3

Argument

nums = [2, -5, 3, -2, 0, 4]

Résultat attendu

60