Menu
CoddyTech

Burst Balloons

Dany jest rząd balonów zapisany jako nums, gdzie nums[i] oznacza liczbę na balonie i. Przebijasz wszystkie balony, po jednym naraz, w wybranej przez siebie kolejności. Za przebicie balonu otrzymujesz left × nums[i] × right monet, gdzie left i right to liczby na jego aktualnych sąsiadach: najbliższych balonach po obu stronach, które nadal znajdują się w rzędzie. Brakujący sąsiad, znajdujący się poza jednym z końców rzędu, jest liczony jako 1. Po przebiciu balonu jego dwaj sąsiedzi stają się sąsiadami. Zwróć maksymalną liczbę monet, jaką możesz zebrać.

Funkcja

maxCoins(nums: integer-array) → integer
numsinteger-array
liczby na balonach, od lewej do prawej
Zwracainteger
najwięcej monet, jakie możesz zebrać, przebijając każdy balon

Ograniczenia

  • 1 ≤ nums.length ≤ 300
  • 0 ≤ nums[i] ≤ 100
  • Odpowiedź jest mniejsza niż 3 × 108, więc mieści się w 32-bitowej liczbie całkowitej ze znakiem.

Przykłady

Wejście
nums = [2, 4, 3]
Wyjście
33
Wyjaśnienie
Zbij pierwsze 4, aby zdobyć 2 × 4 × 3 = 24 monet. 2 i 3 są teraz sąsiadami, więc zbicie 2 daje 1 × 2 × 3 = 6, a 3, teraz samotna, daje 1 × 3 × 1 = 3. To daje 33, a żadna inna kolejność nie przynosi lepszego wyniku: zbicie najpierw małej 2 ogranicza wynik do 24.

lock icon+15 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy możesz też zwrócić jedno zamówienie z fajerwerkami, które zapewnia najwięcej monet?

Zresetuj kod
def maxCoins(nums):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

nums = [2, 4, 3]

Oczekiwane

33