力扣62-不同路径(Java详细题解)

news/2024/9/15 21:35:10/ 标签: leetcode, java, 算法

题目链接:62. 不同路径 - 力扣(LeetCode)

前情提要:

因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。

dp五部曲。

1.确定dp数组和i下标的含义。

2.确定递推公式。

3.dp初始化。

4.确定dp的遍历顺序。

5.如果没有ac打印dp数组 利于debug。

每一个dp题目如果都用这五步分析清楚,那么这道题就能解出来了。

题目思路:

直接按照dp五部曲走。

1.确定dp数组和i下标的含义。

该题要求我们返回到达右下角一共有多少中不同的路径。

而且本题是在一个网格内,所以本题的dp数组是二维的。

那么dp[i] [j]就是指到达第i行j列的不同的路径。

2.确定递推公式。

题目明确,机器人每次只能向下或者向右移动一步。

所以我们第i行j列只能由它的上一行或者左边的一列得出。

dp[i] [j] 只能由 dp[i - 1] [j] 或 dp[i] [j - 1]得出。

那具体怎么得出呢,其实是他俩想加的和。

即本格的不同路径条数是由他上一行格的路径条数和左边一列的路径条数。

3.dp的初始化。

机器人只能从向下或者向右移动。而且dp[i] [j] 只能由 dp[i - 1] [j] 或 dp[i] [j - 1]得出。即本格只能从他的上一行格和左列格的路径得出,所以我们肯定要知道最上边一行和最左边一列的路径。

即dp[i] [0] 和 dp[0] [i]的路径数。

他们的路径其实为1。

为啥为1呢?

机器人只能向右或者向下移动,最上面一行其实就是机器人一直向右移动,其实就一条路径能这样走。最左边一列也同理。

所以do[i] [0] = 1,dp[0] [i] = 1;

4.dp遍历顺序。

其实dp的初始顺序可以有递推公式看出来。每一个台阶只能从他的上一个或者左列的得出。所以dp的遍历顺序是每一行从左往右,每一列从上到下。

5.打印dp数组。

如果没有出现差错,我们就可以不用打印,因为我是写题解,所以我就不添加核心代码以外的代码,不然代码显的有些冗余。

举个列子。

在这里插入图片描述

以上五步都做完,那么此题的代码就可以写出来了。

最终代码:

java">class Solution {public int uniquePaths(int m, int n) {//1.定义dp数组和i下标含义int [][] dp = new int [m + 1][n + 1];//2.递推公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1];//3.初始化for(int i = 0;i < m;i ++){dp[i][0] = 1;}for(int i = 0;i < n;i ++){dp[0][i] = 1;}//4.遍历顺序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];}}//最终位置就为dp[m - 1] [n - 1]return dp[m - 1][n - 1];}
}

这一篇博客就到这了,如果你有什么疑问和想法可以打在评论区,或者私信我。

我很乐意为你解答。那么我们下篇再见!


http://www.ppmy.cn/news/1520889.html

相关文章

IT服务器安全规范 2024.08

安全配置建议 使用场景场景说明安全配置建议登录密钥服务器登录账号及密钥。建议设置为强密码形式&#xff1a;12位以上&#xff0c;同时包含数字、大小写字母、特殊符号远程登录端口22、3389端口分别用于服务器的Linux和Windows场景下的远程登录&#xff0c;需对这两端口进行安…

docker 安装 rabbitmq

参考文档&#xff1a; https://hub.docker.com/_/rabbitmq/ https://www.rabbitmq.com/docs/download https://www.kuangstudy.com/zl/rabbitmq#1366643532940484610 执行下面的命令 docker run -d -it --name myrabbit -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PA…

GaussDB 24.1.30 分布式3节点命令行方式部署

目录 GaussDB介绍 服务器环境 安装前准备 配置会话不中断 操作系统配置 关闭防火墙并禁止开机启动 设置时区和时间 检查时区和时间 java版本 expect root密码一致 root用户ssh连通性 上传软件包和安装脚本 安装脚本配置 修改 install_cluster.json 配置文件 安装…

鸿蒙系统为什么能安装安卓的APP

鸿蒙系统能够安装安卓的APP&#xff0c;主要得益于其设计理念和技术实现上的几个关键点&#xff1a; 一、设计理念 鸿蒙系统的设计初衷并非完全取代安卓系统&#xff0c;而是与其共存&#xff0c;并建立一个更加广泛的软件生态圈。这一理念体现在鸿蒙系统对安卓应用的兼容性上…

2024.9.3 作业

自己实现栈和队列 代码&#xff1a; /*******************************************/ 文件名&#xff1a;sq.h /*******************************************/ #ifndef SQ_H #define SQ_H #include <iostream> #include<cstring>using namespace std; class …

电路分析 ---- 电平移位电路

1 电平移位电路 如图所示的电平移位电路&#xff0c;用于ADC的前级驱动&#xff0c;它将一个变化范围为-10V ~ 10V的输入信号&#xff0c;线性变化成0.048V ~ 4.048V的信号&#xff0c;以满足ADC的输入范围要求。 2 电路说明 V R E F V_{REF} VREF​为电压基准源&#xff0c…

【 WPF 中常用的Brush类的简要介绍、使用方法和适用场景】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 WPF 中常用的 Brush 类的简要介绍、使用方法和适用场景 使用场景解释示例代码&#xff08;为按钮创建一个线性渐变背景&#xff09; Brush 类描述使用示例适用场景SolidColor…

oracle 数据库 day0823

ok了家人们&#xff0c;今天学习了orcle的基本用法&#xff0c;一日不见&#xff0c;如隔三秋啊&#xff0c; 一.多表联合查询 和之前学习的MySQL数据库一样的用法&#xff0c; 1.1 笛卡尔积查询 SELECT * FROM A表,B表 查询员工表和部门表 select * from emp e, dept d; e…

信息打点day.06

一、知识点 1、黑盒测试 黑盒测试是一种评估网络安全性的方法&#xff0c;它模拟了攻击者在不了解系统内部结构和工作机制的情况下&#xff0c;仅通过外部接口&#xff08;如网络协议、应用程序界面等&#xff09;尝试渗透、攻击或绕过安全控制的行为。通过模拟真实的攻击场景…

【JS】如何给fetch添加超时功能

前言 Ajax有两种方式实现请求&#xff0c;分别是xhr和fetch&#xff0c;前者有超时功能&#xff0c;fetch则不然。下文尝试给fetch添加超时功能。 实现 使用终止器&#xff0c;在controller.abort()时便会在使用其signal信号的fetch函数发送一个终止信号&#xff0c;请求就会…

数学建模强化宝典(11)时间预测模型

前言 时间预测模型&#xff0c;即时间序列预测模型&#xff0c;是一类专门用于分析和预测时间序列数据的模型。时间序列数据是指将某一变量在不同时间点的观测值按时间先后顺序排列而成的序列。这类模型在金融、经济、气象、工业控制等多个领域都有广泛的应用。以下是一些常见的…

网络优化:提升MySQL数据恢复效率的策略

在当今的信息技术环境中&#xff0c;数据恢复是确保企业数据安全和业务连续性的关键环节。特别是在网络密集型的环境中&#xff0c;数据恢复的网络优化对于提升恢复速度和效率至关重要。本文将深入探讨如何在MySQL中实现数据恢复的网络优化&#xff0c;包括网络基础设施的优化、…

Unity 贴图拷贝与性能对比

Cooooopy &#x1f333;GetPixels&#x1f333;GetRawTextureData&#x1f333;RenderTexture&#x1f333;Graphics.CopyTexture&#x1f32d;性能对比 &#x1f333;GetPixels var pixels tex.GetPixels();tex2.SetPixels(pixels);tex2.Apply();&#x1f333;GetRawTextureD…

C#中的控件和组件

在 C# 中&#xff0c;特别是在 Windows Forms 应用程序中&#xff0c;控件&#xff08;Controls&#xff09;和组件&#xff08;Components&#xff09;是构建用户界面和提供功能的基础元素。它们都是 System.Windows.Forms 命名空间下的对象&#xff0c;但它们之间存在一些区别…

录屏软件哪个好用免费无水印?微课录课软件推荐 屏幕录制工具app下载

随着在线教学、远程办公和自媒体创作的兴起&#xff0c;电脑录屏软件逐渐成为了许多用户的必备工具。市面上的录屏软件琳琅满目&#xff0c;但真正既好用又免费的却并不多见。今天为大家推荐几款好用的录屏软件&#xff0c;而且这些软件大多都是免费下载使用。赶快看看有没有你…

S-Clustr(影子集群) Simple SCC伪代码编译器,工业控制DSL结构语言,递归函数调用

项目地址:https://github.com/MartinxMax/S-Clustr/releases 200 S-Clustr Simple DSL 语法 内置函数示例RUN(启动设备)RUN:<ID>STOP(停止设备)STOP:<ID>TIME(MS延时)TIME:<Delay/Ms> 函数示例DEF(定义函数名,空形参)DEF Function:DEF(函数名,带形参)DEF …

《Zookeeper 的监听机制及原理解析》

一、引言 在分布式系统中&#xff0c;协调和管理各个节点的状态是一项至关重要的任务。ZooKeeper 作为一个开源的分布式协调服务&#xff0c;被广泛应用于众多分布式系统中&#xff0c;如 Hadoop、HBase、Kafka 等。其中&#xff0c;ZooKeeper 的监听机制是其实现分布式协调的关…

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

828华为云征文&#xff5c;华为云Flexus X实例docker部署srs6并调优&#xff0c;协议使用webrtc与rtmp 华为云最近正在举办828 B2B企业节&#xff0c;Flexus X实例的促销力度非常大&#xff0c;特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务…

4.Copy Constructor的构造操作

目录 1、对象赋值问题引入 2、Bitwise Copy Semantics&#xff08;位逐次拷贝&#xff09; 3、处理class virtual function 4、处理virtual base class subobject 1、对象赋值问题引入 在C中&#xff0c;有三种情况会以一个object的内容作为另一个class object的初值。这三…

ubuntu任何版本 卡死 解决办法

首先&#xff0c;我们一定要记得ubuntu一定不要强制关机&#xff0c;一定&#xff0c;一定 因为90% 的可能你的电脑从此就会黑屏开不了机了&#xff0c;然后你就可以按照我的方法去卸载&#xff0c;重装ubuntu系统了。/(ㄒoㄒ)/~~ &#xff08;如果能解决您的问题&#xff0c…