Menu
CoddyTech

Burst Balloons

Дан ряд шаров в виде nums, где nums[i] — число на шаре i. Вы лопаете все шары по одному в любом выбранном вами порядке. За лопнувший шар начисляется left × nums[i] × right монет, где left и right — числа на его текущих соседях: ближайших шарах с каждой стороны, которые всё ещё находятся в ряду. Если сосед отсутствует за одним из концов ряда, считается, что его число равно 1. После того как шар лопается, два его соседа становятся соседними. Верните максимальное количество монет, которое можно получить.

Функция

maxCoins(nums: integer-array) → integer
numsinteger-array
числа на воздушных шарах, слева направо
Возвращаетinteger
максимальное количество монет, которое можно собрать, лопнув каждый воздушный шар

Ограничения

  • 1 ≤ nums.length ≤ 300
  • 0 ≤ nums[i] ≤ 100
  • Ответ меньше 3 × 108, поэтому он помещается в 32-разрядное знаковое целое число.

Примеры

Ввод
nums = [2, 4, 3]
Вывод
33
Пояснение
Сначала лопните 4, чтобы получить 2 × 4 × 3 = 24 монеты. Теперь 2 и 3 — соседи, поэтому за лопание 2 вы получите 1 × 2 × 3 = 6, а 3, оставшаяся одна, принесёт 1 × 3 × 1 = 3. Итого получается 33, и ни один другой порядок не даст больше: если сначала лопнуть маленькую 2, вы уже ограничите результат 24.

lock icon+15 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Можешь также вернуть один порядок с наибольшей наградой в монетах?

Сбросить код
def maxCoins(nums):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

nums = [2, 4, 3]

Ожидается

33