Difficulty: Medium
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).
The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).
How many possible unique paths are there?
Above is a 7 x 3 grid. How many possible unique paths are there?
Note: m and n will be at most 100.
Example 1:
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 -> Right -> Down
2\. Right -> Down -> Right
3\. Down -> Right -> Right
Example 2:
Input: m = 7, n = 3
Output: 28
Language: Java
class Solution {
public int uniquePaths(int m, int n) {
int[][] ways = new int[m + 1][n + 1]; // 所有的格子都能到达,因此初始化为0,表示没有计算过。该数组用于保存到达该坐标的路径个数,防止重复计算
return uniquePaths(ways, m, n);
}
private int uniquePaths(int[][] ways, int m, int n) {
if (ways[m][n] > 0) {
return ways[m][n];
}
if (m * n == 0) {
ways[m][n] = 0;
return 0;
}
if (m == 1 || n == 1) {
ways[m][n] = 1;
return 1;
}
ways[m][n] = uniquePaths(ways, m, n - 1) + uniquePaths(ways, m - 1, n);
return ways[m][n];
}
}
