62. Unique Paths
There is a robot on an m x n grid. The robot is initially located at the top-left corner (i.e., grid[0][0]). The robot tries to move to the bottom-right corner (i.e., grid[m - 1][n - 1]). The robot can only move either down or right at any point in time.
Given the two integers m and n, return the number of possible unique paths that the robot can take to reach the bottom-right corner.
The test cases are generated so that the answer will be less than or equal to 2 * 10^9.
Example 1:
Input: m = 3, n = 7
Output: 28
Example 2:
Input: m = 3, n = 2
Output: 3
Explanation: From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
1. Right -> Down -> Down
2. Down -> Down -> Right
3. Down -> Right -> Down
My Solution:
經典動態規劃題目,分解成子問題,只能從右邊或者上面到達終點,表示到達(m, n)點的方法有(m-1, n)+(m, n-1),表示成S(m,n)=S(m-1,n)+S(m,n-1),代碼如下:
/**
* @Author: Owen
* @Date: 2022/7/31 15:50
* @Description:
*/
public class Solution {
public int uniquePaths(int m, int n) {
int[][] res = new int[m+1][n+1];
// base state
for (int i=1; i <=m; i++){
res[i][1] = 1;
}
for (int i=1; i <=n; i++){
res[1][i] = 1;
}
for (int i=2; i <= m; i++){
for (int j=2; j <= n; j++){
res[i][j] = res[i-1][j] + res[i][j-1];
}
}
return res[m][n];
}
}
LC 62 - 2022.8.1