当前位置:网站首页>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 分别是棋盘的长和宽。
边栏推荐
- How do beginners get started quickly and learn deeply?
- flowable 全局监听 监听流程的启动和流程的结束
- 2022天梯赛-全国总决赛复盘赛
- Optimization - linear programming
- How to solve the problem that easycvr does not display the interface when RTMP streaming is used?
- SAP MM ME27 创建公司内STO单
- To establish a cloud computing "Kunlun", why should Lenovo hybrid cloud Lenovo xcloud?
- c# sqlsugar,hisql,freesql orm框架全方位性能测试对比 sqlserver 性能测试
- ECMAScript6新特性
- Isolation level of transaction system
猜你喜欢

OpenCvSharp (C# OpenCV) 微信QRCode解码功能使用介绍(附源码)

3dMax建模笔记(一):介绍3dMax和创建第一个模型Hello world

数据库中数据的储存结构和方式是什么?

Optimization - linear programming

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

Kunlundb query optimization (III) sort push down

你踩过这些坑吗?谨慎在时间类型列上创建索引

C sqlsugar, hisql, FreeSQL ORM framework all-round performance test vs. sqlserver performance test

华为云招募工业智能领域合作伙伴,强力扶持+商业变现

KunlunDB 查询优化(一)
随机推荐
Oracle ASM uses the CP command in asmcmd to perform remote replication
Brief introduction: how much do you know about fishing attacks
Fibonacci sequence set
打新债属于什么理财产品?
[go] go array and slice (dynamic array)
启牛学堂属于证券公司吗?开户安全吗?
OpenCvSharp (C# OpenCV) 微信QRCode解码功能使用介绍(附源码)
2022天梯赛-全国总决赛复盘赛
Kunlundb backup and recovery
Hello, is the securities account presented by the Business School of qiniu business school safe? How can I open a safe stock account to speculate in stocks
KunlunDB查询优化(二)Project和Filter下推
Sword finger offer 07 Rebuild binary tree
Typecho imite le modèle de thème du blog Lu songsongsong / modèle de thème du blog d'information technologique
【首发】请求一下子太多了,数据库危
OLAP ——Druid简介
Isolation level of transaction system
你好,启牛商学院商学院赠送的证券账户安全吗?我该怎么开安全的股票账户来炒股
最安全的现货白银的心理分析
数据库每日一题---第20天:按日期分组销售产品
关于测试/开发程序员技术的一些思考,水平很高超的,混不下去了......
