解法: 动态规划 时间O(n*m) 空间(n*m)
class Solution {
public int uniquePaths(int m, int n) {
if(m==1 && n==1){
return 1;
}
int[][] dp = new int[n+1][m+1]; //dp[i][j]表示机器人走到第i行第j列的可能路径
dp[1][1] = 1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(i==1 && j==1) continue;
dp[i][j] = dp[i][j-1]+dp[i-1][j];
}
}
return dp[n][m];
}
}
动态规划优化空间复杂度 O(n)
class Solution {
public int uniquePaths(int m, int n) {
int[] dp = new int[n];
Arrays.fill(dp,1);
for (int i = 1; i < m;i++){
for (int j = 1; j < n; j++){
dp[j] += dp[j-1];
}
}
return dp[n-1];
}
}