当前位置:网站首页>62. 不同路径
62. 不同路径
2022-06-23 00:35:00 【村雨遥】
题目
难度
中等。
描述
假设有一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
例如,上图是一个 7 x 3 的网格。有多少可能的路径?
示例 1:
输入: m = 3, n = 2
输出: 3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
向右 -> 向右 -> 向下
向右 -> 向下 -> 向右
向下 -> 向右 -> 向右
示例 2:输入: m = 7, n = 3
输出: 28
解答
解题思路
采用动态规划的方法,主要分三步走:
- 定义数组元素含义: 首先定义
dp[i][j]是机器人从左上角走到(i, j)时,那么就共有dp[i][j]种方案; - 找到关系数组元素间的关系式: 其次,如果要到达
(i, j)位置,主要有两种方法。第一种是从(i - 1, j)走一步就到,另一种是从(i, j - 1)走一步到达,因此关系是为两种情况相加:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; - 找出初始值: 最后一定不要忘了初始值即边界条件,当我们在最上面一行或者最左边一列时,此时都只有一种方案,我们就将其值初始化为
1;
代码实现
public int uniquePaths(int m, int n) {
if(m <= 0 || n <= 0){
return 0;
}
int[][] dp = new int[m][n];
// 边界情况,初始值
// 1. 最上方
for(int i = 0; i < m; i++){
dp[i][0] = 1;
}
// 2. 最左方
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];
}
时间复杂度
主要是双层循环,所以复杂度是 O(m * n),其中 m 和 n 分别是棋盘的长和宽。
边栏推荐
- 美团基于 Flink 的实时数仓平台建设新进展
- 股票在哪个平台买比较安全呢?
- 详解openGauss多线程架构启动过程
- Typecho imite le modèle de thème du blog Lu songsongsong / modèle de thème du blog d'information technologique
- Notes on zhouguohua's reading
- 2022 TIANTI match - National Finals rematch
- Kunlundb query optimization (II) project and filter push down
- Introduction to the unique variable reading and writing function of Kunlun distributed database
- Sword finger offer 07 Rebuild binary tree
- 【PHP】php多态
猜你喜欢

美团基于 Flink 的实时数仓平台建设新进展
因为我说:volatile 是轻量级的 synchronized,面试官让我回去等通知!

掘地三尺搞定 Redis 与 MySQL 数据一致性问题

SAP UI5 应用开发教程之一百零三 - 如何在 SAP UI5 应用中消费第三方库试读版

SAP UI5 应用开发教程之一百零二 - SAP UI5 应用的打印(Print)功能实现详解试读版

EasyCVR使用RTMP推流时不显示界面如何解决?

Typecho imite le modèle de thème du blog Lu songsongsong / modèle de thème du blog d'information technologique

New paradigm of semantic segmentation! Structtoken: Rethinking the per pixel classification paradigm
声网多人视频录制与合成支持掉线再录制 | 掘金技术征文

KunlunDB查询优化(三)排序下推
随机推荐
Why do we seldom use foreign keys?
c# sqlsugar,hisql,freesql orm框架全方位性能测试对比 sqlserver 性能测试
How Huawei cloud implements a global low delay network architecture for real-time audio and video [Part 1]
掘地三尺搞定 Redis 与 MySQL 数据一致性问题
Oracle ASM使用asmcmd中的cp命令来执行远程复制
graphite statsd接口数据格式说明
在一条DML语句中插入/更新/删除/获取几百万行数据,你会特别注意什么?
数据库每日一题---第20天:按日期分组销售产品
XML escape character cross reference table
Because I said: volatile is a lightweight synchronized, the interviewer asked me to go back and wait for the notice!
Database daily question - day 20: selling products by date
DCC888 :SSA (static single assignment form)
Sword finger offer 11 Minimum number of rotation array
工程目录导航
二叉树转字符串及字符串转二叉树
【GO】Go Modules入門
Ansible 学习总结(8)—— Ansible 控制提权相关知识总结
What financial product does the new bond belong to?
从类、API、框架三个层面学习设计可复用软件的具体技术学习心得
中国国际期货有限公司怎么样,是正规的期货公司吗?网上开户安全吗?
