LeetCode 062、不同路径

LeetCode 062、不同路径

题目

image-20211110215325693

image-20211110215332158

题解

按照动态规划五部曲来分析。

image-20211110220535721

class Solution {
    
    
public:
    int uniquePaths(int m, int n) {
    
    
        if  (m < 0 || n < 0) return 0;

        vector<vector<int>> dp(m, vector<int>(n));
        for (int i = 0; i < m; ++i) dp[i][0] = 1;	// 从(0, 0) 到 (i, 0)的路径一定只有一条
        for (int j = 0; j < n; ++j) dp[0][j] = 1;	// 同理
        for (int i = 1; i < m; ++i) {
    
    
            for (int j = 1; j < n; ++j) {
    
    
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
            }
        }
        return dp[m - 1][n - 1];
    }
};
  • 时间复杂度:O(m * n)
  • 空间复杂度:O(m * n)

下面优化一下空间(不太理解),

class Solution {
    
    
public:
    int uniquePaths(int m, int n) {
    
    
        vector<int> dp(n);
        for (int i = 0; i < n; i++) dp[i] = 1;
        for (int j = 1; j < m; j++) {
    
    
            for (int i = 1; i < n; i++) {
    
    
                dp[i] += dp[i - 1];
            }
        }
        return dp[n - 1];
    }
};

猜你喜欢

转载自blog.csdn.net/qq_45893475/article/details/121258305
今日推荐