Leetcode 64. 最小路径和

文章目录

  • 题目
  • 代码(首刷自解)
  • 代码(8.25 二刷自解)

题目

Leetcode 64. 最小路径和_第1张图片
Leetcode 64. 最小路径和

代码(首刷自解)

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int m = grid.size(), n = grid[0].size();
        vector<vector<int>> dp(m, vector<int>(n, INT_MAX));
        dp[0][0] = grid[0][0];
        for(int i = 1; i < m; i++) {
            dp[i][0] = grid[i][0] + dp[i-1][0];
        }
        for(int i = 1; i < n; i++) {
            dp[0][i] = grid[0][i] + dp[0][i-1];
        }
        for(int i = 1; i < m; i++) {
            for(int j = 1; j < n; j++) {
                dp[i][j] = grid[i][j] + min(dp[i-1][j], dp[i][j-1]);
            }
        }
        return dp[m-1][n-1];
    }
};

代码(8.25 二刷自解)

class Solution {
public:
    int minPathSum(vector<vector<int> >& matrix) {
        int m = matrix.size(), n = matrix[0].size();
        vector<vector<int>> dp(m+1, vector<int>(n+1, 0));
        for(int i = 1; i <= m; i++)
            dp[i][1] = dp[i-1][1] + matrix[i-1][0];
        for(int j = 1; j <= n; j++)
            dp[1][j] = dp[1][j-1] + matrix[0][j-1];

        for(int i = 2; i <= m; i++) {
            for(int j = 2; j <= n; j++) {
                dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + matrix[i-1][j-1];
            }
        }
        return dp[m][n];
    }
};

你可能感兴趣的:(Leetcode专栏,leetcode,算法,动态规划)