My way
很蠢的思路:
- 选择
min
值,爆掉,然后循环至结束。
测都不用测。。。
没想到怎么往DP上面套。
ivan_allen 解
思路转变:
气球从头到尾爆炸 <=> 气球从尾到头爆炸
状态转移方程:
\[ dp[i][j] = max(dp[i][j],\ nums[i]*nums[k]*nums[j] + dp[i][k] + dp[k][j]), \text{if $k \in\ [i,\ j]$} \]
遍历方式:
- 控制子数组长度
len
- 子数组首尾
i
,j
- 使用
k
对数组分割
二维DP实现:
1 | class Solution { |
总结
思路的转变:
- 气球从头到尾爆炸 <=> 气球从尾到头爆炸
头尾虚拟1的添加 类似于之前虚拟0的添加 和 哨兵的思想