当前位置: 首页 > news >正文

代码随想录训练营第三十九天|62.不同路径63. 不同路径 II

62.不同路径

1确定dp数组(dp table)以及下标的含义

从(0,0)出发到(i,j)有 dp[i][j]种路径

2确定递推公式

dp[i][j]=dp[i-1][j]+dp[i][j-1]

3dp数组如何初始化

for(int i=0;i<m;i++)

            dp[i][0] = 1;

        for(int j=0;j<n;j++)

            dp[0][j] = 1;

4确定遍历顺序

从左上到右下

5举例推导dp数组、

m=2,n=2时dp[1][1]=2

class Solution {
public:int uniquePaths(int m, int n) {if(m<=0&&n<=0)return 0;vector<vector<int>> dp(m,vector<int>(n,0));for(int i=0;i<m;i++)dp[i][0] = 1;for(int j=0;j<n;j++)dp[0][j] = 1;for(int i=1;i<m;i++){for(int j=1;j<n;j++){dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m - 1][n - 1];}
};

63. 不同路径 II

1确定dp数组(dp table)以及下标的含义

从(0,0)出发到(i,j)有 dp[i][j]种路径

2确定递推公式

if(obstacleGrid[i][j]==0){dp[i][j]=dp[i-1][j]+dp[i][j-1]}

3dp数组如何初始化

for(int i=0;i<m&& obstacleGrid[i][0]==0;i++) dp[i][0]=1;

for(int j=0;j<n&& obstacleGrid[0][j]==0;j++) dp[j][0]=1;

4确定遍历顺序

从左上到右下

5举例推导dp数组

obstacleGrid=[[0,0,0][0,1,0][0,0,0]]

dp[2][2]=2

class Solution
{
public:int uniquePathsWithObstacles(vector<vector<int>> &obstacleGrid){int m = obstacleGrid.size();int n = obstacleGrid[0].size();if(obstacleGrid[0][0]==1||obstacleGrid[m-1][n-1]==1){return 0;}vector<vector<int>> dp(m,vector<int>(n,0));for(int i=0;i<m&&obstacleGrid[i][0]==0;i++){dp[i][0] = 1;}for (int j = 0; j < n && obstacleGrid[0][j] == 0;j++){dp[0][j] = 1;}for (int i = 1; i < m;i++){for (int j = 1; j < n;j++){if (obstacleGrid[i][j] == 0){dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}}return dp[m - 1][n - 1];}
};

http://www.lryc.cn/news/304456.html

相关文章:

  • 学习大数据所需的java基础(5)
  • Python 光速入门课程
  • 解决vite打包出现 “default“ is not exported by “node_modules/...问题
  • c语言strtok的使用
  • hash,以及数据结构——map容器
  • AIoT网关 人工智能物联网网关
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的鸟类识别系统(Python+PySide6界面+训练代码)
  • 核密度分析
  • 先进语言模型带来的变革与潜力
  • 重铸安卓荣光——上传图片组件
  • Bert基础(四)--解码器(上)
  • Visual Studio快捷键记录
  • 分享84个Html个人模板,总有一款适合您
  • vue使用.sync和update实现父组件与子组件数据绑定的案例
  • C语言系列15——C语言的安全性与防御性编程
  • objectMapper、ObjectNode、JsonNode调用接口时进行参数组装
  • 2024开年,手机厂商革了自己的命
  • 【安全】大模型安全综述
  • Stable Diffusion 模型分享:AstrAnime(Astr动画)
  • 【GPTs分享】每日GPTs分享之Canva
  • 【机器学习】数据清洗——基于Pandas库的方法删除重复点
  • 顺序表增删改查(c语言)
  • MyBatis Plus中的动态表名实践
  • JAVA IDEA 项目打包为 jar 包详解
  • 概率基础——几何分布
  • JavaScript的内存管理与垃圾回收
  • Neo4j导入数据之JAVA JDBC
  • LeetCode 2878.获取DataFrame的大小
  • 索引失效的 12 种情况
  • Spring及工厂模式概述