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

三角形最小路径和

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
};





全部评论

相关推荐

02-28 01:18
已编辑
南昌大学 后端工程师
黑皮白袜臭脚体育生:把开源经历放个人项目上边应该更好,就像大部分人都把实习经历放个人项目上边
点赞 评论 收藏
分享
02-26 13:56
已编辑
重庆财经学院 Java
King987:你有实习经历,但是写的也太简单了,这肯定是不行的,你主要要包装实习经历这一块,看我的作品,你自己包装一下吧,或者发我,我给你出一期作品
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务