--- title: '62. Unique Paths' description: 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 icon: dot topics: - { name: "Math", slug: "math" } - { name: "Dynamic Programming", slug: "dynamic-programming" } - { name: "Combinatorics", slug: "combinatorics" } sidebar: label: 'Unique Paths' badge: 'Medium' --- ### 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 ```py class Solution: def uniquePaths(self, m: int, n: int) -> int: row = [1] * n for i in range(m - 1): newRow = [1] * n for j in range(n - 2, -1, -1): newRow[j] = newRow[j + 1] + row[j] row = newRow return row[0] ```