62. 不同路径

Smile_slime_47

原题地址:https://leetcode.cn/problems/unique-paths/

题解

我们用一个二维数组dp记录下到达每个点的可选路径数,当遍历到点[i][j]时,它只能由上面和左面的点到达,所以对于路径数也有:

考虑到边界条件

  • 当j==0时,dp[i][j]=dp[i-1][j]
  • 当i==0时,dp[i][j]=dp[i][j-1]

最后返回dp[m-1][n-1]即可

时间复杂度:O(N)

空间复杂度:O(N)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public int uniquePaths(int m, int n) {
int[][] dp=new int[m][n];
dp[0][0]=1;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(i-1>=0&&j-1>=0){
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}else if(i-1>=0&&j-1<0){
dp[i][j]=dp[i-1][j];
}else if(i-1<0&&j-1>=0){
dp[i][j]=dp[i][j-1];
}
}
}
return dp[m-1][n-1];
}
}
Comments
On this page
62. 不同路径