【算法练习Day33】不同路径不同路径 II

news2024/12/26 9:20:22

在这里插入图片描述

​📝个人主页:@Sherry的成长之路
🏠学习社区:Sherry的成长之路(个人社区)
📖专栏链接:练题
🎯长路漫漫浩浩,万事皆有期待

文章目录

  • 不同路径
  • 不同路径 II
  • 总结:

本期是两道路径题目,也是用来练习动态规划的好题目,但是我认为没有做过的话还是不太容易想出思路的。

不同路径

62. 不同路径 - 力扣(LeetCode)
在这里插入图片描述

分析题目,要求的是从起始点start到达目的地的不同路径共有几条,分析题意可知,起始点每次都是左上角的顶点,而且机器人每次只能向右前进或者向下前进,不能往回走,这一点十分重要,也就是说该机器人一直向右前进或者一直向下前进,只有一种方案可以到达。这一点很重要,我们根据这一特性来设计动态规划里的dp数组,然后进而推出其他的方格。

dp数组的含义:dp[i][j]代表了当前所处方格处共有多少种方法可以到达此处,i和j是行和列的下标

dp数组初始化:根据之前的分析,我们可以知道将最上边一行和最左侧一列都初始化为1,是合适的。因为到达它们的路径仅有一条。

递推公式:递推公式的得来是根据推理而得出的。我们知道机器人一次只能向下面或者向右边移动一格,那么到达当前的方格的路径数很显然就是该方格上面的位置的路径数加上该方格左边位置的路径数,它们的和也就是当前方格的路径数,公式写成dp[i][j]=dp[i][j-1]+dp[i-1][j]

遍历顺序:这里很显然是从左向右,从上向下,因为我们最终是从左上角出发到达右下角。

通过上述的分析,我们可以得到以下代码

class Solution {
public:
    int uniquePaths(int m, int n) {
        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];
    }
};

关于递推公式如果有不理解的地方,在纸上模拟是最好的方法,我们可以将该二维数组想象成行列均为2,这样很容易知道从起点到终点确实是两种方法。而这两种方法和我们分析的上左两位置路径和的相加即为正确答案的思路,完全相符合。

不同路径 II

63. 不同路径 II - 力扣(LeetCode)
在这里插入图片描述

这道不同路径2和上一道题比,仅仅是多了障碍物这一设定,机器人不能走到放了障碍物的方格上,这里的代码和上一道题差不多,但是一定要注意,障碍物不仅可能出现在中间部分,甚至在初始化时候,也就是最上面一行和最左侧一列也是可能出现的,这一点一定要注意,不要让机器人踩到障碍物上。

dp数组及其含义:仍然是代表了此方格的路径总数

dp数组初始化:初始化时,还是将最上一行和最左一列初始化为1,但是遇到障碍物后,不再进行该行或列的初始化,因为机器人不能向后走的缘故,这些方格永远不会达到。

递推公式:同上一题

遍历顺序:也同上一题

仅仅是需要注意障碍物的问题,如果初始化时候遇到障碍物,那么该行或者列不进行初始化,如果在递推求其他方格时候出现障碍物,则跳过该障碍物方格。

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<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]==1)continue;
                dp[i][j]=dp[i-1][j]+dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
};

总结:

今天我们完成了不同路径&&不同路径 II两道题,相关的思想需要多复习回顾。接下来,我们继续进行算法练习。希望我的文章和讲解能对大家的学习提供一些帮助。

当然,本文仍有许多不足之处,欢迎各位小伙伴们随时私信交流、批评指正!我们下期见~

在这里插入图片描述

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

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

相关文章

腾讯云轻量服务器“镜像类型”以及“镜像”选择方法

腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像&#xff0c;腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍&#xff1a; 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像&#xff1a;独有的应用镜像除了包…

RHCE---作业4

一.批量创建账户 .编写脚本for1.sh,使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用广输入&#xff0c;例如: test1、test2、test3、.....、 test10 read -p "请输入账户前缀名&#xff1a;" user read -p "请输入…

低代码软件在酒店行业的应用:提升效率与创新!

疫情放开后&#xff0c;旅游业开始兴盛发展&#xff0c;酒店行业也恢复了疫情前的繁忙。但是由于管理架构上的不完善导致很多酒店并不能很好地承接巨大的客流量&#xff0c;而消费者在旅游过程对体验要求是最高的&#xff0c;所以酒店拥有一个能够高效运营的管理系统至关重要。…

前端接口请求支持内容缓存和过期时间

前端接口请求支持内容缓存和过期时间 支持用户自定义缓存时间&#xff0c;在规则时间内读取缓存内容&#xff0c;超出时间后重新请求接口 首先封装一下 axios&#xff0c;这一步可做可不做。但是在实际开发场景中都会对 axios 做二次封装&#xff0c;我们在二次封装的 axios …

Redis入门指南学习笔记(1):初识Redis

一.什么是Redis? Redis全称为Remote Dictionary Server&#xff0c;即远程字典服务器&#xff0c;它采用字典结构来存储数据&#xff0c;并允许其他应用通过TCP协议来访问数据。 字典在众多开发语言中都很常见&#xff0c;其形式为键值对&#xff0c;根据键可以获取相应的值…

文件名替换,关键字替换改名:不同路径中的多个文件如何批量重命名

在日常生活和工作中&#xff0c;我们经常需要处理大量的文件&#xff0c;包括重命名、分类、整理等操作。其中&#xff0c;批量重命名不同路径中的多个文件是一项非常常见的任务。本文将介绍云炫文件管理器常见的批量重命名方法&#xff1a;文件名关键字替换改名&#xff0c;帮…

python类模拟“对战游戏”

Game类含玩家昵称、生命值、攻击力(整数)&#xff0c;暴击率、闪避率(小数)&#xff0c;在魔术方法init定义&#xff1b;attack方法中实现两个Game实例对战模拟。 (本笔记适合初通Python类class的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.py…

请输入正确的小程序的链接,并确保小程序允许被搜索

公众号文章插入小程序时提示“请输入正确的小程序的链接&#xff0c;并确保小程序允许被搜索”&#xff1a; 这是因为你输入的是小程序路径&#xff0c;不是小程序链接。 如果是你想使用小程序路径&#xff0c;需要点击第一张图中的蓝色字“去搜索”&#xff0c;然后搜索选择你…

少儿编程 2023年9月中国电子学会图形化编程等级考试Scratch编程四级真题解析(判断题)

2023年9月scratch编程等级考试四级真题 判断题(共10题,每题2分,共20分) 11、运行程序后,变量"result"的值是6 答案:对 考点分析:考查积木综合使用,重点考查自定义积木的使用 图中自定义积木实现的功能是获取两个数中最大的那个数并存放在result变量中,左…

Find My水杯|苹果Find My技术与水杯结合,智能防丢,全球定位

2018年中国智能水杯行业的市场规模约为32亿元&#xff0c;而到2021年&#xff0c;这一市场规模将达到45亿元&#xff0c;增长率约为8.6%。随着智能科技的不断深入发展&#xff0c;智能水杯也越来越受到消费者的青睐&#xff0c;他们更加偏爱智能水杯带来的便捷。智能水杯可以监…

Webpack5中devServer配置contentBase报错的问题

结果报错&#xff0c;没有contentBase这个属性&#xff0c;已经被弃用了。 新的配置方式&#xff1a; const path require(path);module.exports {//...devServer: {static: {directory: path.join(__dirname, public),},compress: true,port: 9000,}, };

关于Spring和SpringBoot中对配置文件的读取

Spring读取xml文件 具体流程见网址Spring源码分析2 — spring XML配置文件的解析流程 - 知乎 (zhihu.com) 我这里只做一下总结和自己的理解&#xff1a; &#xff08;1&#xff09;通过getConfigLocations方法, 从web.xml文件中读取配置文件地址&#xff0c;如果web.xml中读取…

ES 8.x新特性一览(完整版)

一、看点 在 2022 年 2 月 11 日&#xff0c;Elasticsearch&#xff08;ES&#xff09;正式发布了 8.0 版本&#xff0c;而截止到 2023 年 10 月&#xff0c;历经一年半时间&#xff0c;ES官方已经连续发布了多个版本&#xff0c;最新版本为 8.10.4。这一系列的更新引入了众多引…

【多线程面试题二十】、 如何实现互斥锁(mutex)?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;如何实现互斥锁&#xf…

JavaSE20——IO流

IO流 1 Java IO流 I/O是Input/Output的缩写&#xff0c; I/O技术是非常实用的技术&#xff0c;用于处理设备之间的数据传输。如读/写文件&#xff0c;网络通讯等。Java程序中&#xff0c;对于数据的输入/输出操作以“流(stream)” 的方式进行 I(Input): 输入流指的是将数据以…

世界前沿技术发展报告2023《世界航空技术发展报告》(七)机载系统与武器技术

&#xff08;七&#xff09;机载系统与武器技术 1.机载系统技术1.1 美国推进商用5G技术在航空装备中的应用1.2 人工智能技术在航空中的应用日益增多1.3 美国空军研究实验室推出综合座舱感知技术1.4 美国空军为固定翼飞机驾驶员选定新一代头盔1.5 美国DARPA探索通过机载光能量中…

用LibreOffice在excel中画折线图

数据表格如下。假设想以x列为横坐标&#xff0c;y1和y2列分别为纵坐标画折线图。 选择插入-》图表&#xff1a; 选择折线图-》点和线&#xff0c;然后点击“下一步”&#xff1a; 选择&#xff1a;列中包含数据序列&#xff0c;然后点击完成&#xff08;因为图挡住了数据…

【多线程面试题十五】、synchronized可以修饰静态方法和静态代码块吗?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;synchronized可以修饰静…

生物信息学分析-blast序列比对及结果详细说明

1. 软件说明 Blast是一种基于序列比对的分析工具&#xff0c;可以用于寻找生物序列之间的同源性&#xff0c;它的全称是Basic Local Alignment Search Tool。 Blast有多种版本和用途&#xff0c;最常见的是基于Web的Blast和本地安装的Blast程序。Web版Blast可以直接在NCBI网站…