题目链接:https://leetcode-cn.com/problems/triangle/
- dp方程法:
- dp[i][j]状态定义:从底部到 triangle[i][j] 的路径的最小值
- dp[i][j]转移方程式:dp[i][j] = triangle[i][j] + min(dp[i+1][j], dp[i+1][j+1])
- 定义初始化的值:dp[maxRow][j] = triangle[maxRow][j]
代码:
var minimumTotal = function(triangle) {
let maxRow = triangle.length;
// 创造一个dp二维数组,用深拷贝
let dp = JSON.parse(JSON.stringify(triangle));
// 递推方程,从底部向上遍历。
for(let i = maxRow - 2; i>=0; i--) {
for(let j = 0; j < triangle[i].length; j++) {
dp[i][j] = triangle[i][j] + Math.min(dp[i+1][j], dp[i+1][j+1]);
}
}
return dp[0][0];
};