• leetcode64. Minimum Path Sum


    这个题是从左上角到右下角的路径和最小,实际就是一道dp题。

    第一种写法是只初始化(0,0)位置,第二种写法则是把第一行、第一列都初始化了。个人更喜欢第二种写法,简单一点。

    dp的右下角的值就为最终的值

    第一种写法:

    class Solution {
    public:
        int minPathSum(vector<vector<int>>& grid) {
            int rows = grid.size();
            if(rows <= 0)
                return -1;
            int cols = grid[0].size();
            if(cols <= 0)
                return -1;
            vector<vector<int> > result(rows,vector<int>(cols));
            result[0][0] = grid[0][0];
            for(int i = 0;i < rows;i++){
                for(int j = 0;j < cols;j++){
                    if(i != 0 && j != 0)
                        result[i][j] = grid[i][j] + min(result[i-1][j],result[i][j-1]);
                    if(i == 0 && j != 0)
                        result[i][j] = result[i][j-1] + grid[i][j];
                    if(j == 0 && i != 0)
                        result[i][j] = result[i-1][j] + grid[i][j];
                }
            }
            return result[rows-1][cols-1];
        }
    };

     第二种写法:

    class Solution {
    public:
        int minPathSum(vector<vector<int>>& grid) {
            int m = grid.size();
            if(m <= 0)
                return 0;
            int n = grid[0].size();
            if(n <= 0)
                return 0;
            vector<vector<int> > dp(m,vector<int>(n));
            dp[0][0] = grid[0][0];
            for(int i = 1;i < m;i++)
                dp[i][0] = dp[i-1][0] + grid[i][0];
            for(int i = 1;i < n;i++)
                dp[0][i] = dp[0][i-1] + grid[0][i];
            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];
        }
    };
  • 相关阅读:
    camp训练day2
    LCA板子题
    牛客多校第一场
    P1063 能量项链 区间DP
    64. Minimum Path Sum
    46. Permutations
    216. Combination Sum III
    62. Unique Paths
    53. Maximum Subarray
    22. Generate Parentheses
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/9567236.html
Copyright © 2020-2023  润新知