给定一个三角形 triangle ,找出自顶向下的最小路径和。
输入: triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。
代码实现
var minimumTotal = function (brr) {
var m = brr.length;
var dp = [brr[0][0]];
for (var i = 1; i < m; i++) {
var curr = dp.slice();
var arr = brr[i]
var n = arr.length;
for (var j = 0; j < n; j++) {
if (curr[j - 1] === undefined) {
dp[j] = curr[j] + arr[j];
} else if (curr[j] === undefined) {
dp[j] = curr[j - 1] + arr[j];
} else {
dp[j] = Math.min(curr[j - 1], curr[j]) + arr[j];
}
}
}
return Math.min(...dp);
};
代码调试
console.log(minimumTotal([[2],[3,4],[6,5,7],[4,1,8,3]]));