62. 不同路径

image-20240614204134296

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
* @lc app=leetcode.cn id=62 lang=java
*
* [62] 不同路径
*/

// @lc code=start
class Solution {
public int uniquePaths(int m, int n) {
// 1. 确定动规dp函数及含义:dp[i][j]:从0,0开始,到i,j共有dp[i][j]不同的路径
// 2. 确定动规递推公式:dp[i][j] 只有两个方向,向下和向右
// 所以 dp[i][j] = dp[i-1][j] + dp[i][j-1]
// 3. dp数组的初始化:
// dp[i][0] = 1,dp[0][j] = 1
// 4. 确定遍历顺序:从左向右
// 5. 举例推导
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;
}
// 递推,注意这里要从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];
}
}
// @lc code=end