代码随想录算法训练营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 ];

那我们就知道遍历顺序为从上到下,从左到右。同时初始状态为dp[1][1]=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 ];

那我们就知道遍历顺序为从上到下,从左到右。同时初始状态为dp[1][1]=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,题难度也还算可以,题目非常的经典。

相关推荐
Languorous.2 分钟前
C++数据结构进阶|堆(Heap)详解:从手写实现到面试高频实战
数据结构·c++·面试
笨笨饿4 分钟前
80_聊聊SPI以及它们的变体
linux·c语言·网络·stm32·单片机·算法·个人开发
Ricardo-Yang5 分钟前
使用GEE以及LandSat8植被指数NDVI计算
python·深度学习·神经网络·算法·视觉检测
sheeta199811 分钟前
LeetCode 每日一题笔记 日期:2026.05.12 题目:1665. 完成所有任务的最少初始能量
笔记·算法·leetcode
khalil102012 分钟前
代码随想录算法训练营Day-49 图论01 | 图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础
c++·算法·leetcode·深度优先·图论
Chase_______21 分钟前
【算法】删除子数组的最大得分 & 最多 K 个重复元素的最长子数组——不定长滑动窗口与哈希频率约束
算法·哈希算法
Cinema KI27 分钟前
Linux C/C++ 编译构建:GCC/G++ + Makefile 零基础完整教程
linux·c语言·c++
fie888933 分钟前
城市环境下车辆目标跟踪算法 MATLAB 实现
算法·matlab·目标跟踪
tryCbest35 分钟前
软考 - 排序算法
算法·排序算法
念恒123061 小时前
基础IO(文件缓冲区)
linux·c语言·c++