当前位置: 首页 > news >正文

代码随想录算法训练营Day38 | 62. 不同路径、63. 不同路径 II

目录

62. 不同路径

63. 不同路径 II

62. 不同路径

题目

62. 不同路径 - 力扣(LeetCode)

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

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

问总共有多少条不同的路径?

示例 1:

img

输入: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.不同路径

动态规划五部曲:

  1. 确定dp数组以及下标含义:使用二维dp数组保存结果,确定dp[i][j]为到达 (i, j) 有多少条不同的路径
  2. 确定递推公式:dp[i] = dp[i - 1][j] + dp[i][j - 1],因为只能沿两种方向移动
  3. 初始化数组:dp[i][0]=1, dp[0][j]=1,因为从起点到(i, 0)和(0, j)的路径都只有一条
  4. 确定遍历顺序:由递推公式得遍历顺序为从左往右,从上往下
  5. 举例推导:

62.不同路径1

题解

独立题解:

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])。机器人每次只能向下或者向右移动一步。

网格中的障碍物和空位置分别用 10 来表示。机器人的移动路径中不能包含 任何 有障碍物的方格。

返回机器人能够到达右下角的不同路径数量。

测试用例保证答案小于等于 2 * 109

示例 1:

在这里插入图片描述

输入: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

思路

代码随想录:不同路径II

视频讲解:LeetCode:63. 不同路径 II

动态规划五部曲:

  1. 确定dp数组以及下标含义:使用二维dp数组保存结果,确定dp[i][j]为到达 (i, j) 有多少条不同的路径
  2. 确定递推公式:dp[i] = dp[i - 1][j] + dp[i][j - 1],因为只能沿两种方向移动,注意判断题目所给数组的(i, j)位置是否有障碍,有障碍则保持为0的初始状态
  3. 初始化数组:dp[i][0]=1, dp[0][j]=1,因为从起点到(i, 0)和(0, j)的路径都只有一条,注意遇到障碍之后直接结束数组的初始化:63.不同路径II
  4. 确定遍历顺序:由递推公式得遍历顺序为从左往右,从上往下
  5. 举例推导:
63.不同路径II1

63.不同路径II2

题解

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. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到…...

TrickMo 安卓银行木马新变种利用虚假锁屏窃取密码

近期&#xff0c;研究人员在野外发现了 TrickMo Android 银行木马的 40 个新变种&#xff0c;它们与 16 个下载器和 22 个不同的命令和控制&#xff08;C2&#xff09;基础设施相关联&#xff0c;具有旨在窃取 Android 密码的新功能。 Zimperium 和 Cleafy 均报道了此消息。 …...

Java | Leetcode Java题解之第493题翻转对

题目&#xff1a; 题解&#xff1a; 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度后&#xff0c;无法滚动问题&#xff0c;并设置滚动条到最底部 <template><view class"main"><view style"height: 200px;"></view><view class"btn-main"><view class"send-…...

腾讯PAG 动画库Android版本的一个问题与排查记录

1 背景与环境 Android project中有加载动画的需求&#xff0c;设计师推荐使用腾讯的pag动画。项目中使用到的pag android库的版本是&#xff1a;com.tencent.tav:libpag:4.3.50。 2 故事经过 项目中pag的动画资源是有固定尺寸的&#xff0c;由于资源中的内容过于偏左&#x…...

计算机的算术运算之浮点数

3.5 浮点运算 科学计数法&#xff1a;小数点左边只有一位数字的表示数的方法。 规格化&#xff1a;没有前导0的浮点表示法。 二进制小数格式&#xff1a; 1.xxxxxxxxx X 2^yyyyy 浮点&#xff1a;二进制小数点不固定的数的计算机表示。 3.5.1 浮点表示 尾数&#xff1a;…...

Sqlite3 操作笔记

一、 数据格式 支持数据格式 一般数据采用的固定的静态数据类型&#xff0c;而SQLite采用的是动态数据类型&#xff0c;会根据存入值自动判断。SQLite具有以下五种数据类型&#xff1a; 1.NULL&#xff1a;空值。 2.INTEGER&#xff1a;带符号的整型&#xff0c;具体取决有存…...

mysqlRouter读写分离

数据库优化项目 使用中间件ProxySQL实现读写分离降低服务器压力&#xff0c;查看慢查询日志&#xff0c;反馈慢查询优化查询速度&#xff0c;清除无用数据&#xff0c;添加zabbix对mysql的监控。 ProxySql读写分离&#xff1a; 环境&#xff1a;mysql集群134、133 Mysql toute…...

【修订中】ffmpeg 知识点

一、两种安装方式 static FFmpeg binaries for macOS 64-bit Intel brew install ffmpeg 时间有点长 需要挂上代理 二、ffmpeg 使用这个工具去除水印以后原来水印的那个点就模糊了如何解决这个问题呢 使用 FFmpeg 的delogo过滤器去除水印时&#xff0c;通常会导致水印所…...

Rust初踩坑

一、下载 到官网https://www.rust-lang.org/zh-CN/tools/install下载你需要的版本 二、安装 执行rustup-init 文件&#xff0c;选择1 按提示直到安装完成 可以通过以下命令测试&#xff1a; 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月下旬&#xff0c;火山引擎数据飞轮研讨会在北京举办&#xff0c;北京基智科技有限公司&#xff08;以下简称“基智科技”&#xff09;CEO张文战作为积极探索大模型应用领域的企业代表&#xff0c;围绕“数据飞轮如何转进企业业务流”展开主题分享&#xff0c;并介绍基智科技…...

【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. 译文&#xff1a;AUTOSAR架构在最高抽象层次上将软件分为三层&…...

新 Chrome 插件可检测 AI 伪造声音;Canary Speech 推出用于临床对话的语音分析技术丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…...

1. 路由定义

1. 通过配置文件形式 配置方式与laravel的配置方式相似 <?php use Hyperf\HttpServer\Router\Router;Router::get(/hello-hyperf, function () {return Hello Hyperf.; });// 设置一个 GET 请求的路由&#xff0c;绑定访问地址 /get 到 App\Controller\IndexController 的 …...

我们可以用微服务创建状态机吗?

大家好&#xff0c;我是锋哥。今天分享关于【我们可以用微服务创建状态机吗&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 我们可以用微服务创建状态机吗&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 是的&#xff0c;微服务架构可…...

邦芒贴士:职场新人需远离的7种坏习惯

咱们每一个人都会有这样那样的毛病&#xff0c;而试用期就是试毛病的大小。对于职场新人来说&#xff0c;第一份工作很容易暴露这样那样的职业毛病。职业习惯直接决定了我们以后的职业发展&#xff0c;职业能力。对于职场新人来说&#xff0c;在试用期内&#xff0c;一些职场坏…...

面向医院的统一支付平台产品经验分享

我们面向医院的统一支付平台其实应该属于四方平台的范畴,依托于微信、支付宝等第三方支付平台和银联、银行等渠道生存。 二、医院常见系统说明: 先普及一下医院的系统情况: HIS(医院信息系统Hospital Information System):医院内的核心系统,为医院所属各部门提供病人诊…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...