leetcode hot100刷题日记——21.不同路径

和20题一样的思路link

题解:

cpp 复制代码
class Solution {
public:
    int dfs(int i,int j,vector<vector<int>>&memo){
        //超过了边界,return 0
        if(i<0||j<0){
            return 0;
        }
        //从(0,0)到(0,0)只有一条路
        if(i==0&&j==0){
            return 1;
        }
        int &res=memo[i][j];//看之前有没有走过
        if(res){
            return res;//如果走过
        }
        return res=dfs(i-1,j,memo)+dfs(i,j-1,memo);
    }
    int uniquePaths(int m, int n) {
        vector memo(m,vector<int>(n));//用m行n列的数组存位置状态
        return dfs(m-1,n-1,memo);
    }
};
cpp 复制代码
class Solution {
public:
    int uniquePaths(int m, int n) {
        //dp[i][j]=dp[i-1][j]+dp[i][j-1]
        //即:dp[i+1][j+1]=dp[i][j+1]+dp[i+1][j]
        vector dp(m+1,vector<int>(n+1));
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(i==0&&j==0){
                    dp[1][1]=1;//其实看成左上角顶点是(1,1),只有1种方法走到
                }else{
                    dp[i+1][j+1]=dp[i][j+1]+dp[i+1][j];//假设i=0,j=1,dp[1][2]=dp[0][2]+dp[1][1]
                    //这个时候其实是要走到顶点处下面一格,那么很容易知道dp[0][j]和dp[i][0]都必须是0
                    //因为超过边界了,我们在初始化dp数组的时候,dp数组全是0,所以已经包含了以上
                }
            }
        }
        return dp[m][n];
    }
};
相关推荐
漂流瓶jz27 分钟前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
圣保罗的大教堂28 分钟前
leetcode 835. 图像重叠 中等
leetcode
叠层归一研究院2 小时前
基于极限自指的叠层归一宇宙结构理论——无元外部封闭系统的内生区分模型
人工智能·经验分享·算法·agi
Selvaggia3 小时前
Diffusion Model 的基本原理与模型架构
算法
wabs6664 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
hanlin034 小时前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
shehuiyuelaiyuehao5 小时前
算法50,分治归并,数组中的逆序对
java·算法
阳明山水5 小时前
校准分位数驱动智能库存决策
人工智能·深度学习·算法·机器学习·架构
别动我齐刘海6 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
zhangfeng11337 小时前
《从“人工适配“到“智能生成“:KernelSwift 跨国产芯片算子迁移全栈方案解读》 —— 强调范式跃迁和跨硬件属性,适合偏架构分析的写法
人工智能·算法·华为·ai编程·npu