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

三角形最小路径和

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





全部评论

相关推荐

湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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