代码随想录算法训练营29期Day39|LeetCode 62,63

文档讲解:不同路径 不同路径II

62.不同路径

题目链接: https://leetcode.cn/problems/unique-paths/description/

思路:

我们很清楚的知道一点,当前位置只能由两个点到达,左边的点和上边的点。即到当前点的路径数目 = 到左边点的路径数目 + 到上边点的路径数目。

设 dp i j 为到达 (i,j) 点的路径数目,则dp i j =dp i-1 j +dp i j-1 ;

那我们就知道遍历顺序为从上到下,从左到右。同时初始状态为dp11=1,即到达起点的路径只有一条。

核心代码:

cpp 复制代码
class Solution {
public:
    int uniquePaths(int m, int n) {
        int dp[105][105];
        memset(dp,0,sizeof(dp));
        dp[1][1]=1;
        for(int i=1;i<=m;i++)
          for(int j=1;j<=n;j++){
              if(i==1&&j==1) continue;
              dp[i][j]=dp[i-1][j]+dp[i][j-1];
          }
        return dp[m][n];
    }
};

63.不同路径II

题目链接: https://leetcode.cn/problems/unique-paths-ii/description/

思路:

我们很清楚的知道一点,当前位置只能由两个点到达,左边的点和上边的点。即到当前点的路径数目 = 到左边点的路径数目 + 到上边点的路径数目。

设 dp i j 为到达 (i,j) 点的路径数目,则dp i j =dp i-1 j +dp i j-1 ;

那我们就知道遍历顺序为从上到下,从左到右。同时初始状态为dp11=1,即到达起点的路径只有一条。

到目前的思路都和上一道题目一样。

这题有个不同的地方,就是某些点上会有障碍,障碍点是不能走的,也就是说到达障碍点的路径条数为0,这一点需要我们在遍历时特判一下,其他的就没问题了。

核心代码:

cpp 复制代码
class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int dp[105][105];
        memset(dp,0,sizeof(dp));
        if(!obstacleGrid[0][0]) dp[1][1]=1;
        int m=obstacleGrid.size();
        int n=obstacleGrid[0].size();
        for(int i=1;i<=m;i++)
          for(int j=1;j<=n;j++){
              if(i==1&&j==1) continue;
              if(obstacleGrid[i-1][j-1]) dp[i][j]=0;
              else dp[i][j]=dp[i-1][j]+dp[i][j-1];
          }
        return dp[m][n];
    }
};

今日总结

今日学习时长1h,题难度也还算可以,题目非常的经典。

相关推荐
怕浪猫5 分钟前
2840亿参数只卖白菜价:DeepSeek V4 Flash 正式版上线,Agent 能力暴涨6倍
人工智能·算法
让学习成为一种生活方式10 分钟前
苄基异喹啉生物碱糖基转移酶UGT74AN1晶体--Journal of Agricultural and Food Chemistry
人工智能·算法
alphaTao14 分钟前
LeetCode 每日一题 2026/7/27-2026/8/2
python·算法·leetcode
888CC++35 分钟前
C++ 快速学习指南:从入门到进阶的实战路线
开发语言·c++
2501_926978331 小时前
提示工程的实战报告(二):模型的失败模式与边界行为
人工智能·深度学习·算法
小小晓.1 小时前
C++记:函数
开发语言·c++·算法
casual~1 小时前
模逆元计算方法详解:扩展欧几里得算法与费马小定理
学习·算法·逆元
脚踏实地皮皮晨1 小时前
002002002_DepandencyObject类2
开发语言·windows·算法·c#·visual studio
驱动小百科2 小时前
Windows运行库合集下载 VC++、DirectX、.NET运行库安装教程
c++·windows·.net·windows运行库合集下载·windows运行库安装
charlie1145141912 小时前
Cinux —— 给物理内存建账本:bitmap 物理内存管理器
开发语言·c++·操作系统·开源项目