312. 戳气球
难度:困难
2020/7/19每日一题打卡
题目描述
解题思路
今天是抄答案而且还抄的迷迷糊糊的一天
知道要这样做,但是仔细去想为什么是这样的,又说不出个所以然
首先在数组左右两端添加虚拟气球节点,是不能被戳破的,这样能方便处理边界,而且保证总是有三个气球相乘。
然后注意动态规划的顺序,要从区间右边开始,逆序,因为前面的要用到后面的子状态
然后k表示最后一个戳破的气球,这样会好理解很多,是最后一个戳破的,左边和右边的结果都有了,直接dp[i][j] = Math.max(dp[i][j], dp[i][k]+dp[k][j]+nums1[i]*nums1[k]*nums1[j]);
/*
* 312. 戳气球
* 2020/7/19每日一题 难度:困难 动态规划
* dp[i][j] : 先戳破[i, k - 1]和[k + 1, j]的气球,最后戳破第k个气球获得转移方程。
*/
public int maxCoins(int[] nums) {
int n = nums.length;