Unique Paths
Medium
Dynamic ProgrammingCombinatorics
Problem
A robot starts at the top-left of an m × n grid. It can only move right or down. How many unique paths to the bottom-right?
Example 1
Input: m = 3, n = 7
Output: 28
Example 2
Input: m = 3, n = 2
Output: 3
Example 3
Input: m = 7, n = 3
Output: 28
Constraints
- 1 ≤ m, n ≤ 100
- answer fits in int
Approach — Dynamic Programming
This is a Dynamic Programming problem. The idea: break the problem into overlapping subproblems and build the answer up, caching results so nothing is recomputed. Work through the reference code below line by line, then re-derive it yourself in the editor — that's how the pattern sticks.
Complexity: O(n) to O(n²) time.
Solution code
Python
class Solution:
def uniquePaths(self, m, n):
dp = [1] * n
for _ in range(1, m):
for j in range(1, n):
dp[j] += dp[j - 1]
return dp[-1]
Java
class Solution {
public int uniquePaths(int m, int n) {
int[] dp = new int[n];
java.util.Arrays.fill(dp, 1);
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
dp[j] += dp[j - 1];
}
}
return dp[n - 1];
}
}
Practice it
Reading a solution isn't the same as being able to write it under pressure. Open this problem in the in-browser editor, hide the solution, and solve it from scratch — your code runs against real test cases instantly.
Solve Unique Paths interactively → ← All solutions