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

矩阵的最小路径和

https://www.nowcoder.com/practice/7d21b6be4c6b429bb92d219341c4f8bb?tpId=295&tqId=1009012&ru=%2Fpractice%2F166eaff8439d4cd898e3ba933fbc6358&qru=%2Fta%2Fformat-top101%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D295

开始慢慢习惯这种题目

class Solution {
public:
    /**
     * 
     * @param matrix int整型vector<vector<>> the matrix
     * @return int整型
     */
    int minPathSum(vector<vector<int> >& matrix) {
      int row = matrix.size(), col = matrix[0].size();
      //  dp[i][j] 代表i*j大小矩阵的最大路径和
      std::vector<std::vector<int>> dp(row + 1, std::vector<int>(col + 1, 0));
      
      //  注意下标的差别
      //  对于dp来讲,下标+1代表当前结点
      for (int i = 0; i < row; ++i) {
        for (int j = 0; j < col; ++j) {
          //  只有一行
          if (i == 0 && j == 0) {
            dp[i + 1][j + 1] = matrix[i][j];
            continue;
          }
          if (i == 0) {
            dp[i + 1][j + 1] = matrix[i][j] + dp[i + 1][j];
            continue;
          }
          if (j == 0) {
            dp[i + 1][j + 1] = matrix[i][j] + dp[i][j + 1];
            continue;
          }
          dp[i + 1][j + 1] = matrix[i][j] + std::min(dp[i][j + 1], dp[i + 1][j]);
        }
      }
      
      return dp[row][col];
    }
};
全部评论

相关推荐

01-14 16:23
广州商学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务