Leetcode刷题详解——不同路径 II

1. 题目链接:63. 不同路径 II

2. 题目描述:

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 10 来表示。

示例 1:

img

输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
输出:2
解释:3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:
1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右

示例 2:

img

输入:obstacleGrid = [[0,1],[0,0]]
输出:1

提示:

  • m == obstacleGrid.length
  • n == obstacleGrid[i].length
  • 1 <= m, n <= 100
  • obstacleGrid[i][j]01

3. 解法(动态规划):

3.1 算法思路:

3.1.1 状态表示:

dp[i][j]表示:走到[i,j]位置处,一共有多少种方式

3.1.2 状态转移:

如果dp[i][j]表示到达[i,j]位置的方法数,那么到达[i,j]位置之前的一小步,有两种情况:

  1. [i,j]位置的上方([i-1,j]的位置)向下走一步,转移到[i,j]位置
  2. [i,j]位置的左方([i,j-1]的位置)向右走一步,转移到[i,j]位置
  3. 如果这个位置有障碍物,直接等于0

3.1.3 初始化:

添加辅助结点。

添加辅助结点需要注意:

  1. 辅助结点里面的值要保证后续填表是正确的
  2. 下标的映射关系

在本题中,添加一行,添加一列后,只需将dp[1][0]或者dp[0][1]的位置初始化为1即可

请添加图片描述

3.1.4 填表顺序:

根据状态转移的推导,填表的顺序就是从上往下填每一行,每一行从左往右

3.1.5 返回值:

根据状态表示,我们要返回的结果是dp[m][n]

3.2 C++算法代码:

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m=obstacleGrid.size(),n=obstacleGrid[0].size();//创建一个dp表vector<vector<int>> dp(m+1,vector<int>(n+1));//初始化dp[1][0]=1;//填表for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(obstacleGrid[i-1][j-1]==0)dp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[m][n];//返回结果}
};

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连铸生产线液压系统比例伺服阀放大器

连铸生产线液压系统是连铸机的关键组成部分&#xff0c;它由液压站组成&#xff0c;包括高压泵站、剪切机泵站、滑动水口站、塞棒液压站、中间罐车液压站和倾翻台液压站。这些站点通过管道连接&#xff0c;共同实现连铸机的各类动作&#xff0c;如升降、横移、定位、锁紧及辊缝…

TCP/IP(十七)实战抓包分析(一)ICMP

一 TCP实战抓包分析 网络排查案例 ① 抓包分析涉及的内容 关于&#xff1a; TCP理论知识和tcpdump命令的知识,前面已经铺垫过了,这里不再赘述下面罗列了TCP的重点知识 客户端工具&#xff1a; curl、wget、postman、telnet、浏览器、ncwget --bind-addressADDRESS 指定…

酷开科技,让家庭更有温度!

生活中总有一些瞬间&#xff0c;会让我们感到无比温暖和幸福。一个拥抱、一句问候、一杯热茶&#xff0c;都能让我们感受到家庭的温馨和关爱。酷开科技也用自己的方式为我们带来了独属于科技的温暖&#xff0c;通过全新的体验将消费者带进一个充满惊喜的世界&#xff0c;让消费…

如何在Android设备上检查应用程序使用情况,包括使用时间

你可能不知道自己花了多少时间在手机上。很可能你一天中有一半的时间都在盯着手机屏幕。如果你怀疑这一事实,你会很快核实的。在这篇文章中,我们将向你介绍如何在Android设备上检查应用程序的使用情况。 如何在Android上检查应用程序电池使用情况 你使用时间最长的应用程序…

Python爬虫实战(六)——使用代理IP批量下载高清小姐姐图片(附上完整源码)

文章目录 一、爬取目标二、实现效果三、准备工作四、代理IP4.1 代理IP是什么&#xff1f;4.2 代理IP的好处&#xff1f;4.3 获取代理IP4.4 Python获取代理IP 五、代理实战5.1 导入模块5.2 设置翻页5.3 获取图片链接5.4 下载图片5.5 调用主函数5.6 完整源码5.7 免费代理不够用怎…

第18章_MySQL8其它新特性

第18章_MySQL8其它新特性 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 1. MySQL8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本&#xff0c;可见这是一个令人兴奋的里程碑版本。MySQL 8版…

Qt显示中文

中文&#xff1a; unicode&#xff1a;\u4e2d\u6587 utf8&#xff1a;0xE4,0xB8,0xAD,0xE6,0x96,0x87 str 是UI上直接写中文&#xff0c;在这里获取得出的是unicode&#xff1b; str1是得到unicode&#xff0c;相当于fromUtf8() 是将utf8转成unicode&#xff1b; str2是得到…

最新版上门服务小程序源码 同城技师上门服务系统源码

最新版上门服务小程序源码 同城技师上门服务系统源码 需要了解的请看文末 系统介绍&#xff1a; 1、数据概况&#xff08;新增业务城市用户投票功能&#xff0c;更加直观的查看业务城市的关注度、人气和影响力,促进业务开展&#xff09; 2、数据概况 &#xff08;增加可视化…

PowerShell系列(十三):PowerShell Cmdlet高级参数介绍(三)

目录 1、WarningAction参数 2、WarningVariable 出现警告后的变量 3、Whatif 假设参数 4、Confirm参数 今天给大家讲解PowerShell Cmdlet高级参数第三部分相关的知识&#xff0c;希望对大家学习PowerShell能有所帮助&#xff01; 1、WarningAction参数 通过单词含义&…

【如何写论文】硕博学位论文的结构框架、过程与大纲分析

硕士论文可以说是毕业前最重要的一部分&#xff0c;也可以说是展示和检验你3年研究生学习的成果的一个考试。硕士论文答辩和检验合格&#xff0c;才能够顺利拿到毕业生和学位证&#xff0c;可见其重要性。 目录 一、基础框架1.1、摘要&#xff08;Abstract&#xff09;1.2、绪论…

【c++|opencv】一、基础操作---2.图像信息获取

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 图像信息获取&#xff0c;roi 1. 图像信息获取 // 获取图像信息#include <iostream> #include <opencv2/opencv.hpp>using namespace cv; …

【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割7(数据预处理)

在上一节&#xff1a;【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割6&#xff08;数据预处理&#xff09; 中&#xff0c;我们已经得到了与mhd图像同seriesUID名称的mask nrrd数据文件了&#xff0c;可以说是一一对应了。 并且&#xff0c;mask的文件&#xff0c;还根据结…

从红队视角看AWD攻击

AWD的权限维持 攻防兼备AWD模式是一种综合考核参赛团队攻击、防御技术能力、即时策略的比赛模式。在攻防模式中&#xff0c;参赛队伍分别防守同样配置的虚拟靶机&#xff0c;并在有限的博弈时间内&#xff0c;找到其他战队的薄弱环节进行攻击&#xff0c;同时要对自己的靶机环…

安防监控项目---web点灯(网页发送命令控制A9的led)

文章目录 前言一、web点亮LED流程二、静态网页设计&#xff08;html界面&#xff09;三、 CGI和BOA在本项目中的使用总结 前言 书接上期&#xff0c;和大家分享的是web点灯&#xff0c;哈哈哈&#xff0c;谈论起点灯这个词&#xff0c;这么久以来我已然已经成长为一名合格的点…

【Java数据结构重点知识】第一节:认识数据结构与算法、集合框架

一&#xff1a;数据结构与算法 1.数据结构 数据结构是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合 2.算法 算法就是定义良好的计算过程。他取一个或一组的值为输入&#xff0c;并产生一个或一组作为输出。简单来说就是一系列的…

【递归、搜索与回溯算法】第七节.257. 二叉树的所有路径和46. 全排列

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;递归、搜索与回溯算法 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&am…

《动手深度学习》线性回归简洁实现实例

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

antv/g6使用教程及图配置

介绍 G6 是一款由蚂蚁金服 AntV 团队开发的 JavaScript 图形引擎&#xff0c;用于构建各种交互式可视化图形&#xff0c;包括但不限于图表、网络拓扑图、关系图、流程图等。无论是数据分析、决策支持&#xff0c;还是信息可视化&#xff0c;G6 都是一个强大的工具。 以下是 G…

蓝牙 - BLE SPP实现举例 (Bluecode Protocol Stack)

这里以一个无线扫描枪设备为例&#xff0c;这个设备会通过蓝牙通讯协议连接一个底座&#xff0c;使用的是BLE SPP进行通讯。 扫描枪用来扫条码&#xff0c;解析出条码信息后&#xff0c;将数据通过无线传输给底座&#xff0c;底座再通过USB将数据传送给电脑。 底座是Central d…

一篇博客理解Recyclerview的使用

从Android 5.0开始&#xff0c;谷歌公司推出了RecylerView控件&#xff0c;当看到RecylerView这个新控件的时候,大部分人会首先发出一个疑问&#xff0c;recylerview是什么&#xff1f;为什么会有recylerview也就是说recylerview的优点是什么&#xff1f;recylerview怎么用&…