62. Unique Paths 计算从二维数组(0,0)->(m-1,n-1)路径数量

计算从二维数组 (0,0)->(m-1,n-1) 路径数量

思考:最初考虑使用dfs解决,这题不适合使用dfs, 而且会超时。正确解法使用动态规划解决。看到下面的递推公式也就明白了。

方法1:使用二维的数组存放当前的路径数量。

    int uniquePaths(int m, int n) {
        vector> paths(m, vector(n, 1));
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                paths[i][j] = paths[i - 1][j] + paths[i][j - 1];
            }
        }
        return paths[m - 1][n - 1];
    }

方法2:是对方法1的优化,改为一维数组存放当前的路径数量。

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

 

你可能感兴趣的:(leetcode)