Menu
CoddyTech

Burst Balloons

Ti viene data una fila di palloncini rappresentata da nums, dove nums[i] è il numero sul palloncino i. Li fai scoppiare tutti, uno alla volta, nell’ordine che preferisci. Far scoppiare un palloncino fa guadagnare left × nums[i] × right monete, dove left e right sono i numeri sui suoi vicini attuali: i palloncini più vicini su ciascun lato che sono ancora nella fila. Se manca un vicino, oltre una delle estremità della fila, il suo valore è 1. Dopo uno scoppio, i due vicini diventano adiacenti. Restituisci il massimo numero di monete che puoi raccogliere.

Funzione

maxCoins(nums: integer-array) → integer
numsinteger-array
i numeri sui palloncini, da sinistra a destra
Restituisceinteger
il maggior numero di monete che puoi raccogliere facendo scoppiare ogni palloncino

Vincoli

  • 1 ≤ nums.length ≤ 300
  • 0 ≤ nums[i] ≤ 100
  • La risposta è inferiore a 3 × 108, quindi rientra in un intero con segno a 32 bit.

Esempi

Input
nums = [2, 4, 3]
Output
33
Spiegazione
Fai scoppiare per primo il 4 per ottenere 2 × 4 × 3 = 24 monete. Il 2 e il 3 ora sono vicini, quindi facendo scoppiare il 2 ottieni 1 × 2 × 3 = 6, e il 3, rimasto solo, dà 1 × 3 × 1 = 3. Il totale è 33, e nessun altro ordine dà un risultato migliore: facendo scoppiare per primo il 2 più piccolo, ti fermi già a 24.

lock icon+15 test nascosti all’invio

challenge icon

Per approfondire

Puoi anche restituire un ordine esplosivo che frutta il maggior numero di monete?

Ripristina il codice
def maxCoins(nums):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

nums = [2, 4, 3]

Atteso

33