题解 | #三角形最小路径和#

三角形最小路径和

http://www.nowcoder.com/practice/c9d44b73dc7c4dbfa4272224b1f9b42c

前端初学者,刚学动态规划的代码(较为繁琐)

  • dp[i][j]表示以i,j位置的点为起点到达最低端的最小路径和。
  • 状态方程: dp[i][j] = min(triangle[i][j]+dp[i+1][j],triangle[i][j]+dp[i+1][j+1])
  • 边界条件:dp[n - 1][i] = triangle[n - 1][i];(三角形最下面一行)
  • dp[0][0]即为所求
function minTrace( triangle ) {
    // write code here
    if(triangle.length == 0 || !triangle) return 0
    let n = triangle.length;
    //创建二维数组
    let dp = new Array(n);
    for(let i = 0; i< n; i++){
        let len = triangle[i].length
        dp[i] = new Array(len);
    }
    for(let i = 0; i< n; i++){
        dp[n - 1][i] = triangle[n - 1][i];
    }
    for(let i = n -2; i>= 0; i--){
        for(let j = 0; j< triangle[i].length; j++){
            dp[i][j] = Math.min(triangle[i][j]+dp[i+1][j],triangle[i][j]+dp[i+1][j+1])
        }
    }
    return dp[0][0]
    
}
module.exports = {
    minTrace : minTrace
};





全部评论

相关推荐

3 收藏 评论
分享
牛客网
牛客企业服务