120. 三角形最小路径和
方法一 二维数组
var minimumTotal = function(triangle) {
const h = triangle.length;
const dp = new Array(h);
for(let i = 0; i < h; i ++) {
dp[i] = new Array(triangle[i].length)
}
for(let i = h-1; i >= 0; i --) {
for(let j = 0; j < triangle[i].length; j ++) {
if(i === h - 1) {
dp[i][j] = triangle[i][j]
} else {
dp[i][j] = Math.min(dp[i+1][j], dp[i+1][j+1]) + triangle[i][j];
}
}
}
return dp[0][0]
};
方法二 本来循环写的 但是我给他优化了中直接dp取最后一行的值
方法二 一维数组
var minimumTotal = function(triangle) {
// dp 用最后一行表示
const dp = triangle[triangle.length - 1]
// 然后滚动修改dp中的数值
for(let i = dp.length - 2; i >= 0; i --) {
for(let j = 0; j < triangle[i].length; j ++) {
dp[j] = Math.min(dp[j], dp[j+1]) + triangle[i][j];
}
}
return dp[0]
};