代码随想录算法训练营Day38 | 62. 不同路径、63. 不同路径 II
目录
62. 不同路径
63. 不同路径 II
62. 不同路径
题目
62. 不同路径 - 力扣(LeetCode)
一个机器人位于一个 m x n
网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?
示例 1:
输入:m = 3, n = 7
输出:28
示例 2:
输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下
示例 3:
输入:m = 7, n = 3
输出:28
示例 4:
输入:m = 3, n = 3
输出:6
提示:
1 <= m, n <= 100
- 题目数据保证答案小于等于 2 * 109
思路
代码随想录:62.不同路径
视频讲解:LeetCode:62.不同路径
动态规划五部曲:
- 确定dp数组以及下标含义:使用二维dp数组保存结果,确定
dp[i][j]
为到达 (i, j) 有多少条不同的路径 - 确定递推公式:
dp[i] = dp[i - 1][j] + dp[i][j - 1]
,因为只能沿两种方向移动 - 初始化数组:
dp[i][0]=1, dp[0][j]=1
,因为从起点到(i, 0)和(0, j)的路径都只有一条 - 确定遍历顺序:由递推公式得遍历顺序为从左往右,从上往下
- 举例推导:
题解
独立题解:
class Solution {public int uniquePaths(int m, int n) {int[][] dp = new int[m][n];dp[0][0]=1;for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {if(j!=0)dp[i][j]+=dp[i][j-1];if(i!=0)dp[i][j]+=dp[i-1][j];}}return dp[m-1][n-1];}
}
参考题解:
public static int uniquePaths(int m, int n) {int[][] dp = new int[m][n];//初始化for (int i = 0; i < m; i++) {dp[i][0] = 1;}for (int i = 0; i < n; i++) {dp[0][i] = 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
题目
63. 不同路径 II - 力扣(LeetCode)
给定一个 m x n
的整数数组 grid
。一个机器人初始位于 左上角(即 grid[0][0]
)。机器人尝试移动到 右下角(即 grid[m - 1][n - 1]
)。机器人每次只能向下或者向右移动一步。
网格中的障碍物和空位置分别用 1
和 0
来表示。机器人的移动路径中不能包含 任何 有障碍物的方格。
返回机器人能够到达右下角的不同路径数量。
测试用例保证答案小于等于 2 * 109。
示例 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
思路
代码随想录:不同路径II
视频讲解:LeetCode:63. 不同路径 II
动态规划五部曲:
- 确定dp数组以及下标含义:使用二维dp数组保存结果,确定
dp[i][j]
为到达 (i, j) 有多少条不同的路径 - 确定递推公式:
dp[i] = dp[i - 1][j] + dp[i][j - 1]
,因为只能沿两种方向移动,注意判断题目所给数组的(i, j)位置是否有障碍,有障碍则保持为0的初始状态 - 初始化数组:
dp[i][0]=1, dp[0][j]=1
,因为从起点到(i, 0)和(0, j)的路径都只有一条,注意遇到障碍之后直接结束数组的初始化: - 确定遍历顺序:由递推公式得遍历顺序为从左往右,从上往下
- 举例推导:

题解
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)break;dp[i][0] = 1;}for (int j = 0; j < n; j++) {if (obstacleGrid[0][j] == 1)break;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];}
}
相关文章:

代码随想录算法训练营Day38 | 62. 不同路径、63. 不同路径 II
目录 62. 不同路径 63. 不同路径 II 62. 不同路径 题目 62. 不同路径 - 力扣(LeetCode) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到…...

TrickMo 安卓银行木马新变种利用虚假锁屏窃取密码
近期,研究人员在野外发现了 TrickMo Android 银行木马的 40 个新变种,它们与 16 个下载器和 22 个不同的命令和控制(C2)基础设施相关联,具有旨在窃取 Android 密码的新功能。 Zimperium 和 Cleafy 均报道了此消息。 …...

Java | Leetcode Java题解之第493题翻转对
题目: 题解: class Solution {public int reversePairs(int[] nums) {Set<Long> allNumbers new TreeSet<Long>();for (int x : nums) {allNumbers.add((long) x);allNumbers.add((long) x * 2);}// 利用哈希表进行离散化Map<Long, Int…...
uniapp scroll-view翻转90度后,无法滚动问题,并设置滚动条到最底部(手写横屏样式)
uniapp scroll-view翻转90度后,无法滚动问题,并设置滚动条到最底部 <template><view class"main"><view style"height: 200px;"></view><view class"btn-main"><view class"send-…...
腾讯PAG 动画库Android版本的一个问题与排查记录
1 背景与环境 Android project中有加载动画的需求,设计师推荐使用腾讯的pag动画。项目中使用到的pag android库的版本是:com.tencent.tav:libpag:4.3.50。 2 故事经过 项目中pag的动画资源是有固定尺寸的,由于资源中的内容过于偏左&#x…...

计算机的算术运算之浮点数
3.5 浮点运算 科学计数法:小数点左边只有一位数字的表示数的方法。 规格化:没有前导0的浮点表示法。 二进制小数格式: 1.xxxxxxxxx X 2^yyyyy 浮点:二进制小数点不固定的数的计算机表示。 3.5.1 浮点表示 尾数:…...
Sqlite3 操作笔记
一、 数据格式 支持数据格式 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种数据类型: 1.NULL:空值。 2.INTEGER:带符号的整型,具体取决有存…...
mysqlRouter读写分离
数据库优化项目 使用中间件ProxySQL实现读写分离降低服务器压力,查看慢查询日志,反馈慢查询优化查询速度,清除无用数据,添加zabbix对mysql的监控。 ProxySql读写分离: 环境:mysql集群134、133 Mysql toute…...
【修订中】ffmpeg 知识点
一、两种安装方式 static FFmpeg binaries for macOS 64-bit Intel brew install ffmpeg 时间有点长 需要挂上代理 二、ffmpeg 使用这个工具去除水印以后原来水印的那个点就模糊了如何解决这个问题呢 使用 FFmpeg 的delogo过滤器去除水印时,通常会导致水印所…...

Rust初踩坑
一、下载 到官网https://www.rust-lang.org/zh-CN/tools/install下载你需要的版本 二、安装 执行rustup-init 文件,选择1 按提示直到安装完成 可以通过以下命令测试: rustc -V # 注意的大写的 V cargo -V # 注意的大写的 V三、在VScode中…...
element-ui 的el-calendar日历组件样式修改
<div style"width:100%;height:calc(100% - 35px);margin-top: 5px;"><el-calendar v-model"calendar" style"height: 100%;"></el-calendar></div> css部分 <style>/* 去除底色 */ /deep/ .el-calendar {backg…...
LinuxDebian系统安装nginx
1、安装了必要的开发工具和库文件 sudo apt update sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev2、下载Nginx源码 cd /home/kylin wget http://nginx.org/download/nginx-1.20.1.tar.gz tar -zxvf nginx-1.26.2.tar.gz cd nginx-1…...
Redis 数据类型Streams
目录 1 基本特性 2 主要操作命令 2.1 XADD key ID field value [field value ...] 2.2 XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] 2.3 XRANGE key start end [COUNT count] 2.4 XREVRANGE key end start [COUNT count] 2.5 XGROUP …...
基智科技CEO张文战:探索火山引擎数据飞轮模式下的大模型应用新机会
9月下旬,火山引擎数据飞轮研讨会在北京举办,北京基智科技有限公司(以下简称“基智科技”)CEO张文战作为积极探索大模型应用领域的企业代表,围绕“数据飞轮如何转进企业业务流”展开主题分享,并介绍基智科技…...

【AUTOSAR标准文档】AotuSar结构横向分层详解(RTE、BSW)
Top view The AUTOSAR Architecture distinguishes on the highest abstraction level between three software layers: Application, Runtime Environment and Basic Software which run on a Microcontroller. 译文:AUTOSAR架构在最高抽象层次上将软件分为三层&…...

新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 RTE 开发者日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…...
1. 路由定义
1. 通过配置文件形式 配置方式与laravel的配置方式相似 <?php use Hyperf\HttpServer\Router\Router;Router::get(/hello-hyperf, function () {return Hello Hyperf.; });// 设置一个 GET 请求的路由,绑定访问地址 /get 到 App\Controller\IndexController 的 …...

我们可以用微服务创建状态机吗?
大家好,我是锋哥。今天分享关于【我们可以用微服务创建状态机吗?】面试题?希望对大家有帮助; 我们可以用微服务创建状态机吗? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 是的,微服务架构可…...
邦芒贴士:职场新人需远离的7种坏习惯
咱们每一个人都会有这样那样的毛病,而试用期就是试毛病的大小。对于职场新人来说,第一份工作很容易暴露这样那样的职业毛病。职业习惯直接决定了我们以后的职业发展,职业能力。对于职场新人来说,在试用期内,一些职场坏…...
面向医院的统一支付平台产品经验分享
我们面向医院的统一支付平台其实应该属于四方平台的范畴,依托于微信、支付宝等第三方支付平台和银联、银行等渠道生存。 二、医院常见系统说明: 先普及一下医院的系统情况: HIS(医院信息系统Hospital Information System):医院内的核心系统,为医院所属各部门提供病人诊…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

OPENCV图形计算面积、弧长API讲解(1)
一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积,这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能,常用的API…...