Menu
CoddyTech

Burst Balloons

Une rangée de ballons est donnée sous la forme nums, où nums[i] est le nombre inscrit sur le ballon i. Vous les faites tous éclater, un à la fois, dans l’ordre de votre choix. Faire éclater un ballon rapporte left × nums[i] × right pièces, où left et right sont les nombres inscrits sur ses voisins actuels : les ballons les plus proches de chaque côté qui se trouvent encore dans la rangée. Un voisin manquant, au-delà de l’une ou l’autre extrémité de la rangée, compte pour 1. Après l’éclatement d’un ballon, ses deux voisins deviennent adjacents. Renvoyez le nombre maximal de pièces que vous pouvez collecter.

Fonction

maxCoins(nums: integer-array) → integer
numsinteger-array
les nombres sur les ballons, de gauche à droite
Renvoieinteger
le nombre maximal de pièces que vous pouvez collecter en faisant éclater chaque ballon

Contraintes

  • 1 ≤ nums.length ≤ 300
  • 0 ≤ nums[i] ≤ 100
  • La réponse est inférieure à 3 × 108, donc elle tient dans un entier signé de 32 bits.

Exemples

Entrée
nums = [2, 4, 3]
Sortie
33
Explication
Faites éclater le 4 en premier pour obtenir 2 × 4 × 3 = 24 pièces. Le 2 et le 3 sont maintenant voisins, donc faire éclater le 2 rapporte 1 × 2 × 3 = 6, et le 3, désormais seul, rapporte 1 × 3 × 1 = 3. Cela fait 33, et aucun autre ordre ne donne un meilleur résultat : faire éclater le petit 2 en premier vous limite déjà à 24.

lock icon+15 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu également renvoyer un ordre d’éclatement qui rapporte le plus de pièces ?

Réinitialiser le code
def maxCoins(nums):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

nums = [2, 4, 3]

Attendu

33