【算法五十】62. 不同路径

62. 不同路径

动态规划(二维数组):

java 复制代码
class Solution {
    public int uniquePaths(int m, int n) {
        //子问题:走到目标的左边以及上边的方法和
        //从左上角走到dp[i][j]有多少种路径
        //状态转移方程:dp[i][j] = dp[i-1][j] + dp[i][j-1]
        //从小到大

        int[][] dp = new int[m][n];
        dp[0][0] = 1;
        for(int i = 0;i<m;i++){
            for(int j = 0;j<n;j++){
                if(i ==0 && j==0){
                    continue;
                }
                dp[i][j] = (i>0 ? dp[i-1][j]:0) + (j>0 ? dp[i][j-1]:0);
            }
        }
        return dp[m-1][n-1];
    }
}

时间复杂度:O(M*N)

空间复杂度:O(M*N)

动态规划(一维数组):

java 复制代码
class Solution {
    public int uniquePaths(int m, int n) {
        int[] dp = new int[n];
        //第一行只有1
        for(int i = 0;i<n;i++){
            dp[i] = 1;
        }

        //接着换行处理
        for(int i = 1;i<m;i++){
            for(int j = 1;j<n;j++){
                dp[j] = dp[j] + dp[j-1];
            }
        }
        return dp[n-1];
    }
}

时间复杂度:O(M*N)

空间复杂度:O(N)

优化思路:就是将二维的m转化为for循环里的i,按层去处理,因为dpij只和自己左边还有上面的数值有关

相关推荐
lzhdim2 小时前
AI的分类
人工智能·算法·机器学习·分类·数据挖掘
凤凰院凶涛QAQ5 小时前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法
w_zero_one7 小时前
算法--模拟
java·数据结构·算法
秋天的怀念_David7 小时前
算法一千零一夜 · 第十三夜 幻方,武侠世界里的数学迷宫
java·程序人生·算法
秋天的怀念_David8 小时前
算法一千零一夜 · 第十四夜 幻方与奇妙的二进制
java·程序人生·算法
薛定e的猫咪8 小时前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
薛定e的猫咪8 小时前
(ICLR 2026)DF-META:面向 FJSP 的无导数元学习实例自适应调度
人工智能·深度学习·学习·算法·机器学习
小羊没烦恼!10 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
wanderist.10 小时前
202609CSP认证P3
算法
云淡风轻~窗明几净11 小时前
角谷猜想最接近严格证明的测试 Version1.1.1
人工智能·算法·机器学习·图论