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

news2024/9/25 19:25:37

不同路径 

题目链接:力扣

题外话:这题拿到的时候就发现其实是小学三年级的奥数题,甚至寒假看我妹做过【笑哭😂】

  1. 确定dp数组(dp table)以及下标的含义
    dp[i][j] :表示从(0,0)出发,到(i, j) 有dp[i][j]条不同的路径。
  2. 确定递推公式
    想要求dp[i][j],只能有两个方向来推导出来,即dp[i - 1][j] 和 dp[i][j - 1]。
    所以 dp[i][j] = dp[i - 1][j] + dp[i][j - 1],因为dp[i][j]只有这两个方向过来。
  3. dp数组的初始化
    dp[i][0]一定都是1,因为从(0, 0)的位置到(i, 0)的路径只有一条,dp[0][j]也同理均为1
  4. 确定遍历顺序
    由dp[i][j] = dp[i - 1][j] + dp[i][j - 1]递推公式可知,dp[i][j]都是从其上方和左方推导而来,那么从左到右一层一层遍历即可。
  5. 举例推导dp数组

class Solution {
public:
    int uniquePaths(int m, int n) {

        vector<vector<int>>dp(m,vector<int>(n,0));

        for(int i=0;i< n;i++)
          dp[0][i] = 1;
        for(int i=0;i< m;i++)
          dp[i][0] = 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];
                  

    }
};

 不同路径 II 

题目链接:力扣 

 这题和上一题相比,多了障碍物。那么在初始化时,有障碍物的地方及其之后的数(因为有障碍物就说明这一行障碍物之后都无法再走了)都设为0,在递推赋值的时候,碰到障碍物,则在该点设为0。

  1. 确定dp数组(dp table)以及下标的含义
    dp[i][j] :表示从(0,0)出发,到(i, j) 有dp[i][j]条不同的路径。
  2. 确定递推公式
    与上题一样dp[i][j] = dp[i - 1][j] + dp[i][j - 1]。
    但这里需要注意一点,因为有了障碍,(i, j)如果就是障碍的话就设为dp[i][j] = 0;
  3. dp数组的初始化
    因为从(0, 0)的位置到(i, 0)的路径只有一条,所以dp[i][0]一定为1,dp[0][j]也同理。
    但如果(i, 0) 这条边有了障碍之后,障碍之后(包括障碍)都是走不到的位置了,所以障碍之后的dp[i][0]应该还是初始值0。

  4. 确定遍历顺序
    同上题

  5. 举例推导dp数组

 

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {

        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();

        vector<vector<int>>dp(m, vector<int>(n,0));

        for(int i=0; i<n; i++)
        {
            if(!obstacleGrid[0][i])    //没有障碍物则是1
              dp[0][i] = 1;
            else                       //有障碍物则是初始值0,后面均不再赋值
              break;
        }
         
        for(int i=0; i<m; i++)
        {
            if(!obstacleGrid[i][0])   //没有障碍物则是1
              dp[i][0] = 1;
            else                      //有障碍物则是初始值0,后面均不再赋值
              break;
        }

        for(int i=1; i<m; i++)
         for(int j=1; j<n; j++)
         {
             if(obstacleGrid[i][j])
              dp[i][j]=0;
             else
              dp[i][j]=dp[i-1][j]+dp[i][j-1];
         }

         return dp[m-1][n-1];

    }
};

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/657478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nvm控制nodejs版本

1.关系如图 2. 环境配置 3.报错解决 路径导致的nvm安装nodejs失败&#xff1f; The system cannot find the path specified. Could not download node.js v16.19.1 64-bit executable. 解决&#xff1a;nvm安装路径D:\Program Files\nvm&#xff0c;nvm管理的nodejs路径D:\Pro…

在Qgis中使用QMetaTiles插件进行XYZ瓦片离线下载方法

目录 前言 一、Qgis插件库 1、插件库简介 2、QMetaTiles介绍 二、QMetaTiles插件安装 1、在线安装 2、离线安装 三、瓦片下载 1、打开QmeaTiles插件 2、Leaflet加载下载的瓦片 总结 前言 电子地图是地图类应用的基石&#xff0c;作为整个系统的基础。其它的图层要素都构…

Web应用技术(第八周/第4次练习/4h)

这一次练习对JSP和Servlet进行了补充学习 1.JSP的本质&#xff1a;2.include指令的作用&#xff1a;3.EL表达式语言与JSTL&#xff1a;关于EL表达式&#xff1a;&#xff08;1&#xff09;EL表达式用于取参数值与参数值的设定&#xff1a;&#xff08;2&#xff09;EL表达式的本…

【Redis】哨兵机制

一、哨兵机制高可用架构图 哨兵模式时给予主从模式的&#xff0c;是为了解决主从模式单点&#xff08;master&#xff09;故障导致服务不可用的问题&#xff0c;但并未解决单节点存储能力有限的问题。 二、心跳检测机制 三、 选举机制 主观下线&#xff1a;主服务器master宕机后…

html实现好看的个人介绍,个人主页模板4(附源码)

文章目录 1.设计来源1.1 主界面1.2 我的文章界面1.3 我的相册界面1.4 关于我界面1.5 联系我界面 2.效果和源码2.1 动态效果2.2 源代码2.2 源代码目录 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/131265259 …

web实验四表单处理实验

实验原理 通过jQuery实现修改HTML标签属性&#xff0c;完成网页的动态显示效果&#xff0c;理解JavaScript语法、动态页面的实现原理、基本设计思想及实现方法。 实验目的 理解并掌握基于id、class、name等HTML属性选择器的实现方法 理解并掌握控制disabled、checked、hidden等…

python自动化办公——定制化读取Excel数据并写入到word表格

Python自动化办公——Excel写word表格 文章目录 Python自动化办公——Excel写word表格一、引言二、数据准备三、python代码1、方法一2、方法二3、方法三 一、引言 最近到了毕业设计答辩的时候&#xff0c;老师让我帮毕业生写一段毕业设计的功能就是提供一个学士学位授予申请表…

网安自学路线学习心得/学习规划

趁着今天下班&#xff0c;我花了几个小时整理了下&#xff0c;非常不易&#xff0c;希望大家可以点赞收藏支持一波&#xff0c;谢谢。 我的经历&#xff1a; 我 19 年毕业&#xff0c;大学专业是物联网工程&#xff0c;我相信很多人在象牙塔里都很迷茫&#xff0c;到了大三大…

pywinauto自动化测试使用经验

本文主要介绍了pywinauto自动化测试使用经验&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 在开发Windows应用程序时&#xff0c;我们经常需要进行测试来确保程序…

CSS基础学习--16 Float(浮动)

一、定义 CSS 的 Float&#xff08;浮动&#xff09;&#xff0c;会使元素向左或向右移动&#xff0c;其周围的元素也会重新排列。 Float&#xff08;浮动&#xff09;&#xff0c;往往是用于图像&#xff0c;但它在布局时一样非常有用。 元素的水平方向浮动&#xff0c;意味着…

【Spring】— Spring MVC的注解

目录 Spring MVC的注解1.DispatcherServlet2.Controller注解类型3.RequestMapping注解类型&#xff08;1&#xff09;RequestMapping注解的使用&#xff08;2&#xff09;RequestMapping注解的属性&#xff08;3&#xff09; 组合注解&#xff08;4&#xff09;请求处理方法的参…

2023天猫纸品数据:抽纸销额高达25亿,湿厕纸为重点增长类目

如今&#xff0c;纸巾早已成为人们日常生活的必需品。作为刚需物品&#xff0c;纸巾的产品形态呈现多元化、细分化趋势&#xff0c;其市场规模也比较庞大。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年1月至4月&#xff0c;天猫平台上纸巾行业大盘的销量超过1.6…

05 用况图

用况图 1. 主题 是由一组用况所描述的一个系统或子系统。 以Credit Card Validation System 所标识的矩形就是一个主题&#xff1a; 2. 用况 使用视角&#xff1a; 用况表达了参与者使用系统的一种方式。 系统设计视角&#xff1a;一个use case规约了系统可以执行的一个动…

Spring AOP讲解

目录 Spring AOP概念 AOP适用场景 AOP 组成 1、切面&#xff08;Aspect&#xff09; 2、切点&#xff08;Pointcut&#xff09; 3、通知&#xff08;Advice&#xff09; 4、连接点&#xff08;Join Point&#xff09; Spring AOP实现 添加AOP框架依赖 定义切面和切点…

解决 An attempt was made to call a method that does not exist. 问题详解

哈喽大家好&#xff0c;我是阿Q。今天在开发代码的过程中&#xff0c;由于手抖&#xff0c;不知道引入了什么包依赖&#xff0c;导致项目启动一直报错&#xff0c;特写本文来记录下解决问题的经过。 文章目录 问题描述报错信息如下报错描述 解决方法总结 有想赚点外块|技术交流…

hadoop基础(二)

JAVA客户端 环境搭建 创建Maven项目,添加Hadoop依赖. <dependencies><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId…

神级插件Bito介绍及使用

还在用其他AI?不是说它不火了&#xff0c;而是你基本上很难访问了。这里介绍个便宜且免费的AI聊天插件&#xff0c;一样可以很棒。永久免费且不限制次数&#xff0c;有这好事&#xff1f;且听下文分解。 前言 虽然GPT 是用不了&#xff0c;推荐下国内的一些大模型&#xff0c…

Win10下pytorch3D安装方法,本人亲测可用

本人的电脑配置如下&#xff1a; GPU&#xff1a;GTX 1050TiCUDA&#xff1a;11.1python&#xff1a;3.8pytorch&#xff1a;1.9.0pytorch3d&#xff1a;0.7.1NVIDIA CUB&#xff1a;cub-1.9.10-1 目录 1.版本确认 2.下载cub 3.下载pytorch3d 4.下载VSC2019 5.编译pytorch…

Web3开发准备工作 手把手带你创建自己的 MetaMask 账号

查看本文 您需要在自己的谷歌浏览器中添加 扩展工具 MetaMask 如果没有添加 可以查看文章 Web3 将 MetaMask添加入谷歌浏览器 扩展程序中 我们打开它并点击开始使用 那么 我们第一次进来 肯定是啥都没有 所以 我们点 创建钱包 他这里 就会先跟你说清楚 他不会收集你的 秘钥 地…

握手信号的打拍

在数字电路的设计中,对关键路径的处理方法之一就是插入寄存器,然而,对握手信号插入寄存器则需要进行特殊的处理,否则可能导致数据传输的错乱,严重影响电路的功能。 如图所示,为了阐述对握手信号打拍的处理方式,我们给出了下图所示的简化模型,其中,上游的握手信号包括v…