120 Triangle

给定一个三角形,找到从上到下的最小路径和。

动态规划的状态转移方程

dp[i][j] 表示第i层第j个元素到达底层所需的最短路径
状态转移方程 dp[i][j] = triangle[i][j] + min(dp[i+1][j], dp[i+1][j+1])

将二维的dp逐次更新,空间复杂度O(n)

/**
 * @param {number[][]} triangle
 * @return {number}
 */
var minimumTotal = function(triangle) {
    var dp = triangle[triangle.length - 1]
    for(var i = triangle.length - 2; i >= 0; i--){
        for(var j = 0; j < triangle[i].length; j++){
            dp[j] = triangle[i][j] + Math.min(dp[j], dp[j + 1])
        }
        dp.pop()
    }
    return dp[0]
};

你可能感兴趣的:(120 Triangle)