Menu
CoddyTech

Burst Balloons

Dany jest rząd balonów nums, gdzie nums[i] oznacza liczbę na balonie i. Przebijasz wszystkie balony, po jednym naraz, w dowolnej 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 każdej stronie, które nadal znajdują się w rzędzie. Brakujący sąsiad 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
Zamień 4 na 2 × 4 × 3 = 24. Dwójka, teraz obok 3, daje 1 × 2 × 3 = 6, a trójka daje 3: razem 33.
challenge icon

Pytanie dodatkowe

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

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

Test #1

Test #2

Test #3

Argument

nums = [2, 4, 3]

Oczekiwany wynik

33