原题地址: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]; } }
|