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 * 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

 

Constraints:

  • 1 <= m, n <= 100
SOLUTION:
class Solution:
    def uniquePathsRec(self, m, n, i, j):
        if i == m - 1 or j == n - 1:
            return 1
        if (i, j) in self.cache:
            return self.cache[(i , j)]
        res = self.uniquePathsRec(m, n, i + 1, j) + self.uniquePathsRec(m, n, i, j + 1)
        self.cache[(i, j)] = res
        return res
    
    def uniquePaths(self, m: int, n: int, i = 0, j = 0) -> int:
        self.cache = {}
        return self.uniquePathsRec(m, n, 0, 0)

Comments

Popular posts from this blog

Minimum Number of Operations to Move All Balls to Each Box

Efficient Generation of Nth Row of Binomial Coefficient Modulo M

Lazy Deletion in Heap: A Wrapper for Python heapq