力扣64. 最小路径和

Problem: 64. 最小路径和

题目描述

在这里插入图片描述在这里插入图片描述

思路

对于二维动态规划我们往往要建立一个矩阵,同时将矩阵的第一行、列根据题意填写出相应的值以完成状态的初始化(接下来规定矩阵grid的函数为row,列数为col)

1.创建一个与grid等大的int类形矩阵dp,用于记录从gird左上角度到右下角的最短距离
2.初始化dp的第一行、列:将grid第一行、列元素的累加和分别填入dp的第一行列(若不明其意,直接看代码即可);
3.从dp的第一行、列开始动态转移,由于是从右上角到左下角,所以每次移动只能是向下或者向右移动则当前位置的最短距离为当前位置右侧或者上侧中的最小值加上当前位置的元素值即dp[i][j] = min(dp[i][j - 1], dp[i - 1][j]) + grid[i][j]
4.最终返回dp[row - 1][col - 1]

复杂度

时间复杂度:

O ( M × N ) O(M \times N) O(M×N);其中 M M M是矩阵的行数, N N N是矩阵的列数

空间复杂度:

O ( M × N ) O(M \times N) O(M×N)

Code

class Solution {
public:
    /**
     * The minimum path sum is obtained by dynamic programming
     * @param grid Given matrix(Store the number of steps)
     * @return int
     */
    int minPathSum(vector<vector<int>>& grid) {
        int row = grid.size();
        int col = grid[0].size();
        vector<vector<int>> dp(row, vector<int>(col));
        int temp = 0;
        for (int i = 0; i < col; ++i) {
            temp += grid[0][i];
            dp[0][i] = temp;
        }
        temp = 0;
        for (int j = 0; j < row; ++j) {
            temp += grid[j][0];
            dp[j][0] = temp;
        }
        //Dynamic transfer equation
        for (int i = 1; i < row; ++i) {
            for (int j = 1; j < col; ++j) {
                dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
            }
        }
        return dp[row - 1][col - 1];
    }
};

相关推荐

  1. 120. 三角形路径

    2024-04-15 09:40:01       41 阅读
  2. 0120——三角形路径

    2024-04-15 09:40:01       37 阅读
  3. DP- 120.三角形路径

    2024-04-15 09:40:01       16 阅读
  4. 【DP】64.路径

    2024-04-15 09:40:01       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-15 09:40:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-15 09:40:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-15 09:40:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-15 09:40:01       20 阅读

热门阅读

  1. 我的编程与创作历程:512天从C语言到Linux

    2024-04-15 09:40:01       13 阅读
  2. Pytorch:二维卷积及其伴随定义

    2024-04-15 09:40:01       42 阅读
  3. SpringBoot中的常见注解详细介绍,附带代码示例

    2024-04-15 09:40:01       16 阅读
  4. 神经网络模型底层原理与实现10-softmax的实现

    2024-04-15 09:40:01       47 阅读
  5. PyQt5

    PyQt5

    2024-04-15 09:40:01      47 阅读
  6. 如何防御局域网的网络攻击

    2024-04-15 09:40:01       43 阅读
  7. LeetCode 1.两数之和

    2024-04-15 09:40:01       53 阅读
  8. Fortinet年度重磅发布 ,FortiOS 7.6高能登场

    2024-04-15 09:40:01       24 阅读
  9. @CrossOrigin注解解决跨域问题

    2024-04-15 09:40:01       18 阅读
  10. LeetCode 128.最长连续数列

    2024-04-15 09:40:01       22 阅读