给定一个三角形,找到从上到下的最小路径和。
动态规划的状态转移方程
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]
};