刷刷刷 Day 39 | 62. 不同路径

62. 不同路径

LeetCode题目要求

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

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

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

示例

输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下
解题思路
// 要到的右下角,必须先到右 或者 下
// 以 m = 3,n = 2 为例,从左上角开始走,
/**
| 0 | 1
-----------
0 | 0 | x
1 | x | x
2 | x | x
*/
// 路径 1. 右 -> 下 -> 下 右后面没有就只能往下
// 路径 2. 下 -> 下 -> 右 一直下再往右
// 路径 3. 下 -> 右 -> 下 先下再右再下
// 从起点开始,有两种路径可走,往右 或 往下
//
// 从左上到右下移动,每次一步
// 动规五部曲
// 1. dp[i][j] 数组 , 表示从 [0,0] 到 [i,j] 有 dp[i][j] 种方法
// 2. 递推公式 dp[i][j] = dp[i][j-1] + dp[i-1][j]
// 3. 初始化数组 dp[i][j] ,
// 从 [0,0] 到 [i,0] 时,只有一条路径,那么 dp[i][0] = 1,
// 从 [0,0] 到 [0,j] 时,只有一条路径,那么 dp[0][j] = 1
// 4. 遍历顺序

上代码

class Solution {
public int uniquePaths(int m, int n) {
// 要到的右下角,必须先到右 或者 下
// 以 m = 3,n = 2 为例,从左上角开始走,
/**
| 0 | 1
-----------
0 | 0 | x
1 | x | x
2 | x | x
*/
// 路径 1. 右 -> 下 -> 下 右后面没有就只能往下
// 路径 2. 下 -> 下 -> 右 一直下再往右
// 路径 3. 下 -> 右 -> 下 先下再右再下
// 从起点开始,有两种路径可走,往右 或 往下
//
// 从左上到右下移动,每次一步
// 动规五部曲
// 1. dp[i][j] 数组 , 表示从 [0,0] 到 [i,j] 有 dp[i][j] 种方法
// 2. 递推公式 dp[i][j] = dp[i][j-1] + dp[i-1][j]
// 3. 初始化数组 dp[i][j] ,
// 从 [0,0] 到 [i,0] 时,只有一条路径,那么 dp[i][0] = 1,
// 从 [0,0] 到 [0,j] 时,只有一条路径,那么 dp[0][j] = 1
// 4. 遍历顺序
int[][] dp = new int[m][n];
for (int i = 0; i < m; i++) {
dp[i][0] = 1;
}
for (int j = 0; j < n; j++) {
dp[0][j] = 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];
}
}
重难点

附:学习资料链接

posted @   blacksonny  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示