思路:
动态规划,dp[i][j] = dp[i + 1][j] + dp[i][j + 1]。
初始化,i=m-1的时候dp[m-1][j] = 1,j = n - 1的时候dp[i][n - 1] = 1。
遍历顺序,计算i,j的时候要先算出i + 1 和 j + 1,所以i从m-2到0,j从n-2到0。
空间优化 dp[i] = dp[i] + dp[i + 1]。
代码:
class Solution {
public int uniquePaths(int m, int n) {
int[] dp = new int[n];
Arrays.fill(dp, 1);
for(int i = m - 2; i >= 0; i--) {
for(int j = n - 2; j >= 0; j--) {
dp[j] += dp[j + 1];
}
}
return dp[0];
}
}