美文网首页
动态规划3:三角形的最小路径和

动态规划3:三角形的最小路径和

作者: RichardBillion | 来源:发表于2019-07-26 10:25 被阅读0次

从顶点出发,向下一层,只能走向左或向右的相邻的元素(比如第三层的6只能走到下一层的4和1),问走到最底一层时,经过元素的最小和为多少。

        2
      3   4
    6   5    7
  4   1    8    3

记住: DP是从底到上回溯

定义状态f(m,n)为从底部一点出发,到达(m, n)点时的最小和, 则f(0,0)即为所求。

可得状态转移方程:

f(m, n) = min(f(m+1, n), f(m+1, n+1)) + arr[m][n]

arr为原始数据。

有初始值:最后一行(m === arr.length)时, f(m, j) = arr[m][j];

代码如下:

function result() {
    let arr = [
        [2],
        [3,4],
        [6,5,7],
        [4,1,8,3]
    ];


    const M = arr.length;
    // 初始化一个二维数组
    let res = [];
    for(let i = 0; i<M;i++) {
        res[i] = [];
    }

    // 初始值
    res[M-1] = arr[M-1];

    // DP
    for(let i = M-2; i>=0; i--) {
        for(let j = 0; j<=i; j++) {
            res[i][j] = Math.min(res[i+1][j], res[i+1][j+1]) + arr[i][j]
        }
    }

    return res[0][0];
}

时间复杂度为m x n, 空间复杂度也为m x n.

考虑下,还有哪儿能优化么?

上面计算每一层的res时,其实只跟下一层有关,所以我们可以将保存最小和结果的二维数组改为一维数组。

function result() {
    let arr = [
        [2],
        [3,4],
        [6,5,7],
        [4,1,8,3]
    ];

    const M = arr.length;
    let res = [...arr[M-1]];

    for(let i = M-2; i>=0; i--) {
        for(let j = 0; j<=i; j++) {
             res[j] = Math.min(res[j], res[j+1]) + arr[i][j];
        }
    }
    return res[0];
}

相关文章

  • LeetCode-120-三角形的最小路径和

    LeetCode-120-三角形的最小路径和 动态规划介绍 题目 给定一个三角形,找出自顶向下的最小路径和。每一步...

  • [leetcode刷题笔记]动态规划之多维dp问题

    记录几道使用动态规划问题。 三角形最小路径和 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相...

  • 动态规划

    70 爬楼梯 记忆化数组解决: 动态规划解决: 120 三角形最小路径和 解法一:既然是从上往下移动,我们可以把上...

  • LeetCode之Minimum Path Sum(Kotlin

    问题: 方法:因为限定只能向右或向下,可以使用动态规划,当前点的最小路径和等于(左边点的最小路径和加当前点路径值)...

  • 120.三角形最小路径和

    题解:给出一个三角形,求从顶点到最底层的路径的最小和 方法:动态规划2个参数,i,j,代表从(i,j)出发直到底层...

  • 动态规划3:三角形的最小路径和

    从顶点出发,向下一层,只能走向左或向右的相邻的元素(比如第三层的6只能走到下一层的4和1),问走到最底一层时,经过...

  • LeetCode 120. 三角形最小路径和(Triangle)

    120. 三角形最小路径和 三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻...

  • 动态规划 2020-03-17

    动态规划 动态规划重要的是:判断状态,状态转移方程 数字三角形 问题描述给定一个数字三角形,找到从顶部到底部的最小...

  • LeetCode-最小路径和(动态规划)

    题目链接 => 戳这里 解法

  • 100天代码挑战:DAY11

    LeetCode 120. 三角形最小路径和 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相...

网友评论

      本文标题:动态规划3:三角形的最小路径和

      本文链接:https://www.haomeiwen.com/subject/cxcrrctx.html