 All Problems
Burst Balloons
hard
array
dynamic programming
divide and conquer
google
facebook

You are given n balloons, indexed from 0 to n - 1. Each balloon is painted with a number on it represented by an array nums. You are asked to burst all the balloons.

If you burst the ith balloon, you will get nums[i-1] * nums[i] * nums[i+1] coins. If i-1 or i+1 goes out of bounds of the array, treat it as if there is a balloon with a 1 painted on it.

Return the maximum coins you can collect by bursting the balloons wisely.

Example 1:

Input:  3 1 5 8
Output: 167

(3×1×5 + 3×5×8 + 1×3×8 + 1×8×1 = 15+120+24+8 = 167)

Example 2:

Input:  1 5
Output: 10

Constraints:

  • n == nums.length
  • 1 ≤ n ≤ 300
  • 0 ≤ nums[i] ≤ 100

Input format: Space-separated integers.

Output format: Maximum coins.

Run to check your code against the sample cases, or submit to run every case