120. 三角形最小路径和

解法一:动态规划-自底向上
类似题型
62. 不同路径
63. 不同路径 II
图解

DP
重复性(分治)
problem(i,j) = min(sub(i+1,j) , sub(i+1,j+1)) + a[i,j]
problem(i,j):当前行当前列(二维数组)的向下面走的路径总数
sub(i+1,j):下一行当前列(即向下并向左边走)的路径总数
sub(i+1,j+1):下一行下一列(即向下并向右边走)的路径总数
路径总数包括自己所在位置a[i,j],即到达当前位置所需的步数
定义状态数组
dp[i,j]
DP方程
dp[i,j] = min(dp[i+1,j],dp[i+1][j+1])+dp[i,j]
初始化数据
一般是第一行n列和第一列n行或者最后一行n列最后一列n行
但题中本意就是为了比较相邻数字和的大小,直接用原题的数据,最后一行n列即可对推到起点。
/**
 * @param {number[][]} triangle
 * @return {number}
 */
var minimumTotal = function(triangle) {
    var dp = triangle;
    for(var i = dp.length-2;i >= 0;i--){
        for(var j = 0;j < dp[i].length;j++){
            dp[i][j] = Math.min(dp[i+1][j],dp[i+1][j+1]) + dp[i][j];
        }
    }
    return dp[0][0];
};


作者:Alexer-660
链接:https://leetcode-cn.com/problems/triangle/solution/120-san-jiao-xing-zui-xiao-lu-jing-he-by-alexer-66/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(120. 三角形最小路径和)