Menu
CoddyTech

Burst Balloons

Uma fileira de balões é dada como nums, em que nums[i] é o número no balão i. Você estoura todos eles, um de cada vez, em qualquer ordem que escolher. Estourar um balão rende left × nums[i] × right moedas, em que left e right são os números nos seus vizinhos atuais: os balões mais próximos em cada lado que ainda estão na fileira. Um vizinho ausente, além de qualquer uma das extremidades da fileira, conta como 1. Depois de estourar um balão, os dois vizinhos se tornam adjacentes. Retorne o maior número de moedas que você pode coletar.

Função

maxCoins(nums: integer-array) → integer
numsinteger-array
os números nos balões, da esquerda para a direita
Retornainteger
o maior número de moedas que você pode coletar estourando todos os balões

Restrições

  • 1 ≤ nums.length ≤ 300
  • 0 ≤ nums[i] ≤ 100
  • A resposta é menor que 3 × 108, então cabe em um inteiro com sinal de 32 bits.

Exemplos

Entrada
nums = [2, 4, 3]
Saída
33
Explicação
Estoure os 4 primeiros para ganhar 2 × 4 × 3 = 24 moedas. O 2 e o 3 agora são vizinhos, então estourar o 2 rende 1 × 2 × 3 = 6, e o 3, agora sozinho, rende 1 × 3 × 1 = 3. Isso totaliza 33, e nenhuma outra ordem resulta em um valor maior: estourar o pequeno 2 primeiro já limita o total a 24.

lock icon+15 testes ocultos ao enviar

challenge icon

Para ir além

Você também pode retornar uma ordem de explosão que ganhe mais moedas?

Redefinir código
def maxCoins(nums):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

nums = [2, 4, 3]

Esperado

33