刷刷刷 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]; } }
重难点
附:学习资料链接
标签:
动态规划
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了