题目描述:
解析:dp 从右下往左上推
class Solution {
public int uniquePaths(int m, int n) {
if (m == 1 || n == 1) {
return 1;
}
int[][] dp = new int[m][n];
for (int i = 0; i < m - 1; i++) {
dp[i][n - 1] = 1;
}
for (int i = 0; i < n - 1; i++) {
dp[m - 1][i] = 1;
}
int currRow = m - 2;
int currColum = n - 2;
while (currRow >= 0) { //保证行不越界
dp[currRow][currColum] = dp[currRow + 1][currColum] + dp[currRow][currColum + 1];
currColum--;
if (currColum < 0) { //表示列越界
currRow--;
currColum = n - 2;
}
}
return dp[0][0];
}
}