63. 不同路径 II

news2024/9/20 16:58:00

题目

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

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

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

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

示例 1:


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


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

提示:

m == obstacleGrid.length
n == obstacleGrid[i].length
1 <= m, n <= 100
obstacleGrid[i][j] 为 0 或 1

解:

这题就比62不同路径复杂一点,没有看过的小伙伴可以去看一下,这两题思路基本一致

(147条消息) 62. 不同路径_褚赢宇的博客-CSDN博客

思路还是与62一样的思路,但不同的是这题多了障碍物。所以和62相比有以下的不同:

(1)没有设障碍物的62题第一行和第一列的dp方法数全设为1,但要注意在这题当第一行或者第一列出现障碍物时,当前坐标dp数为0,其后的坐标dp数也应该设为0。如下图为例子,如果障碍物位于(0,1)和(1,0)两个坐标点,不仅仅要将(0,1)和(1,0)的dp数设为0,而且(0,2)(2,0)的dp都应该为0,因为根据规则第一行你只能从左边走来,这条路都封了后面自然也为0。第一列同理

(2)62题中动态规划转移方程为dp[i][j]=dp[i-1][j]+dp[i][j-1],这题也一样,不过要加个判断条件,判断这个点是否有障碍物,如果有这是不通的,就不用给它赋值,它为初始值0

class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
          int m=obstacleGrid.length;//行数
          int n=obstacleGrid[0].length;//列数
          int [][]dp=new int[m][n];
         for(int i=0;i<m;i++) {
        	 if(obstacleGrid[i][0]==1)//当第一列有障碍物则dp为0且其后坐标都为0
                  break;
        		 dp[i][0]=1;
        	 
         }
        for(int i=0;i<n;i++) {
        	if(obstacleGrid[0][i]==1)//与上面同理
            break;
        		dp[0][i]=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.coloradmin.cn/o/31161.html

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

相关文章

MySQL主/从-主/主集群安装部署

MySQL集群架构的介绍 我们在使用到MySQL数据库的时候&#xff0c;只是一个单机的数据库服务。在实际的生产环境中&#xff0c;数据量可能会非常庞大&#xff0c;这样单机服务的MySQL在使用的时候&#xff0c;性能会受到影响影响。并且单机服务的MySQL的数据安全性也会受到影响…

数字信号处理-09-串行FIR滤波器MATLAB与FPGA实现

前言 本文介绍了设计滤波器的FPGA实现步骤&#xff0c;并结合杜勇老师的书籍中的串行FIR滤波器部分进行一步步实现硬件设计&#xff0c;对书中的架构做了简单的优化&#xff0c;并进行了仿真验证。 FIR滤波器的FPGA实现步骤 从工程角度分析FIR滤波器的FPGA实现步骤如下&…

Vim简洁教程

Vim简洁教程Vim简介使用方法命令模式输入模式底线命令模式模式转换使用流程Vim键盘图Vim简介 在Linux系统中&#xff0c;Vim是一款自带的文本编辑器&#xff0c;因此Vim常用于Linux系统中。Vim是从 vi 发展出来的&#xff0c;包含代码补全、编译及错误跳转等方便编程的功能&am…

【LeetCode每日一题】——78.子集

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数组 二【题目难度】 中等 三【题目编号】 78.子集 四【题目描述】 给你一个整数数组 nums &…

亚太C题详细版思路修改版(精)

今年的亚太A、B题的感觉难度不低&#xff0c;其难度已经可以与电工妈杯这种比赛的赛题难度相提并论了。因此&#xff0c;这次预计选C题的人数可能不少&#xff0c;这对于大家来说也是个好消息。塞翁失马焉知非福&#xff0c;难对于大家来说都难&#xff0c;只要自己放平心态&am…

计算机组成原理习题课第一章-1(唐朔飞)

计算机组成原理习题课第一章-1&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&…

【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?

导语 Hello&#xff0c;大家好呀&#xff01;我是木木子吖&#xff5e; 一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。 听说关注我的人会一夜暴富发大财哦~ &#xff08;哇哇哇 这真的爱&#x1f60d;&#x1f60d;&#xff09; 所有文章完整的素材源码都在&#…

Android中JVM七大垃圾收集器【解析】

概述 GC垃圾收集器的种类 新生代&#xff1a;年轻代用来存放最近创建的对象老年代&#xff1a;主要存放应用程序中生命周期长的内存对象永久代&#xff1a;内存的永久保存区域&#xff08;类和元数据&#xff09;&#xff0c;GC不参与回收Serial收集器&#xff1a;串行收集器…

web网页设计—— 中国餐饮协会(HTML+CSS)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

CentOS8使用阿里云yum源异常问题及解决方法

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站 Linux安装git时发生如下错误 [rootraoyuuuu maven]# dnf install git Repository extras is listed more than once in the configuration Repository epel is listed more than once in the configuration CentOS-8 - B…

关于windows的文件监控管理系统(Java)

目 录 摘 要 I Abstract II 1.绪论 1 1.1课题背景 1 1.2系统开发的目的和意义 2 1.3国内外概况 3 1.4研究主要内容 3 2.windows文件监控管理系统相关技术介绍 4 2.1 API 4 2.2 API HOOK 5 2.3 Java 5 2.4 DLL 6 2.4 Windows系统的Socket编程 6 2.4.1使用WinSock API 6 2.4.2 使…

【 C++ 】IO流

目录 1、C语言的输入输出 2、流是什么 3、CIO流 3.1、C标准IO流 3.2、C文件IO流 文件操作步骤 以二进制的形式操作文件 以文本的形式操作文件 4、stringstream的介绍 1、C语言的输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf()和printf()。 scanf()&#xff1a…

[前端基础] JavaScript 基础篇(下)

DOM 和 BOM DOM 指的是文档对象模型&#xff0c;它指的是把文档当做一个对象来对待&#xff0c;这个对象主要定义了处理网页内容的方法和接口。BOM 指的是浏览器对象模型&#xff0c;它指的是把浏览器当做一个对象来对待&#xff0c;这个对象主要定义了与浏览器进行交互的法和…

Node核心模块之Stream

Node.js诞生之初就是为了提高IO性能&#xff0c;文件操作系统和网络模块实现了流接口&#xff0c;Node.js中流就是处理流式数据的抽象接口。 那么应用程序为什么使用流来处理数据&#xff1f; 常见问题 同步读取资源文件&#xff0c;用户需要等待数据读取完成资源文件最终一次…

【Windows】windows10时间显示秒数

一般情况下windows10的电脑时间只显示小时和分钟&#xff0c;但是有的用户想要时间显示更加精细&#xff0c;那么windows10时间怎么显示秒呢&#xff1f;大家可以通过修改注册表的方式进行设置&#xff1a;打开注册表编辑器&#xff0c;定位到Advanced&#xff0c;右键新建DWOR…

【第十四篇】Camunda系列-多人会签【多实例】

多人会签 Multiple Instance 也叫多实例任务。 1.会签说明 多实例活动是为业务流程中的某个步骤定义重复的一种方式。在编程概念中,多实例与 for each 结构相匹配:它允许对给定集合中的每个项目按顺序或并行地执行某个步骤或甚至一个完整的子流程。 多实例是一个有额外属性…

注解(Annotation)

注解 注解也被称为元数据&#xff08;MateDate&#xff09;,用于修饰或解释包&#xff0c;类&#xff0c;方法&#xff0c;属性&#xff0c;构造器&#xff0c;局部变量等数据信息和注释一样&#xff0c;注解不会影响程序逻辑&#xff0c;但是注解可以被编译或者运行&#xff…

如何定义需求优先级?

本文将围绕以下问题展开&#xff1a;1、什么是需求优先级排序&#xff0c;目的是什么&#xff1f;2、优先级排序的8大依据&#xff1b;3、需求优先级排序面临的挑战&#xff1b;4、一些优秀的需求优先级排序工具。 一、什么是需求优先级排序&#xff0c;目的是什么&#xff1f;…

Mybatis-plus 用法

本文主要介绍 mybatis-plus 这款插件&#xff0c;针对 springboot 用户。包括引入&#xff0c;配置&#xff0c;使用&#xff0c;以及扩展等常用的方面做一个汇总整理&#xff0c;尽量包含大家常用的场景内容。 关于 mybatis-plus 是什么&#xff0c;不多做介绍了&#xff0c;看…

大一作业HTML网页作业:简单的旅游 1页 (旅游主题)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&…