Unique Paths
Problem
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
andn
, 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 * 109
.
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
Pseudocode
- dfs to find all paths, use memo to reduce recursion if function has been there
- dfs will return all unique paths
Solution
var uniquePaths = function (m, n) {
let map = [];
for (let i = 0; i < m; i++) {
map.push(new Array(n).fill(0));
}
return walk(0, 0, m, n, map, 0);
};
function walk(x, y, m, n, map, count) {
// base condition
if (x >= m || y >= n) {
return 0;
}
// we've been here before, just add
if (map[x][y] !== 0) {
return map[x][y];
}
// if arrived at target return 1
if (x === m - 1 && y === n - 1) {
return 1;
}
// pre
// recurse
const down = walk(x + 1, y, m, n, map, count);
const right = walk(x, y + 1, m, n, map, count);
// post
const sum = down + right;
map[x][y] = sum;
count += sum;
return count;
}
Time and Space Complexity
Time
What did the code do
Total -
Space
What did the code do
Total -
Last updated