Menu
CoddyTech

Burst Balloons

Se te da una fila de globos como nums, donde nums[i] es el número del globo i. Los revientas todos, uno a la vez, en el orden que quieras. Reventar un globo te da left × nums[i] × right monedas, donde left y right son los números de sus vecinos actuales: los globos más cercanos a cada lado que todavía están en la fila. Si falta un vecino, más allá de cualquiera de los extremos de la fila, cuenta como 1. Después de reventar un globo, sus dos vecinos pasan a ser adyacentes. Devuelve la mayor cantidad de monedas que puedes obtener.

Función

maxCoins(nums: integer-array) → integer
numsinteger-array
los números de los globos, de izquierda a derecha
Devuelveinteger
la mayor cantidad de monedas que puedes recoger al reventar todos los globos

Restricciones

  • 1 ≤ nums.length ≤ 300
  • 0 ≤ nums[i] ≤ 100
  • La respuesta es menor que 3 × 108, así que cabe en un entero con signo de 32 bits.

Ejemplos

Entrada
nums = [2, 4, 3]
Salida
33
Explicación
Revienta primero los 4 para obtener 2 × 4 × 3 = 24 monedas. El 2 y el 3 ahora son vecinos, así que reventar el 2 te da 1 × 2 × 3 = 6, y el 3, ahora solo, da 1 × 3 × 1 = 3. Eso suma 33, y ningún otro orden lo supera: reventar primero el 2 pequeño ya te limita a 24.

lock icon+15 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿También puedes devolver una orden explosiva que otorgue la mayor cantidad de monedas?

Restablecer código
def maxCoins(nums):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

nums = [2, 4, 3]

Esperado

33