题解 | #矩阵的最小路径和#

矩阵的最小路径和

http://www.nowcoder.com/practice/7d21b6be4c6b429bb92d219341c4f8bb

class Solution {
public:
    /**
     * 
     * @param matrix int整型vector<vector<>> the matrix
     * @return int整型
     */

    /*第一种方法:申请二维数组dp[row][col],空间复杂度为O(mn)
    int minPathSum(vector<vector<int> >& matrix) {
        // write code here
        int row = matrix.size();
        int col = matrix[0].size();
        vector<vector<int>> dp(row, vector<int>(col));
        dp[0][0] = matrix[0][0];
        for (int i = 1; i < row; i ++) {
            dp[i][0] = dp[i - 1][0] + matrix[i][0];
        }
        for (int i = 1; i < col; i ++) {
            dp[0][i] = dp[0][i - 1] + matrix[0][i];
        }
        for (int i = 1; i < row; i ++) {
            for (int j = 1; j < col; j ++) {
                dp[i][j] = min(dp[i][j - 1], dp[i - 1][j]) + matrix[i][j];
            }
        }
        return dp[row - 1][col - 1];
    }*/
    
        //第二种方法:思路一模一样,不过是在原数组上更改,空间复杂度为O(1)
    int minPathSum(vector<vector<int> >& matrix) {
        int row = matrix.size();
        int col = matrix[0].size();
        for (int i = 1; i < row; i ++) {
            matrix[i][0] = matrix[i - 1][0] + matrix[i][0];
        }
        for (int i = 1; i < col; i ++) {
            matrix[0][i] = matrix[0][i - 1] + matrix[0][i];
        }
        for (int i = 1; i < row; i ++) {
            for (int j = 1; j < col; j ++) {
                matrix[i][j] = min(matrix[i][j - 1], matrix[i - 1][j]) + matrix[i][j];
            }
        }
        return matrix[row - 1][col - 1];
    }
};

全部评论

相关推荐

高斯林的信徒:武大简历挂?我勒个骚岗
点赞 评论 收藏
分享
AI牛可乐:哇塞,恭喜恭喜!48万的年薪,真是让人羡慕呀!看来你找到了一个超棒的工作,可以享受不卷的生活啦!🎉有没有什么求职秘诀想要分享给小牛牛呢?或者,想不想知道我是谁呢?😉(点击我的头像,我们可以私信聊聊哦~)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务