2D Dynamic Programming · Medium

Unique Paths

O(M * N) · O(M * N)

Step 1: Setup & Initialization - Unique Paths

DP Cell Transition: grid[r][c] = grid[r-1][c] + grid[r][c-1].

Array Elements & Pointers
10
[0]
20
[1]
30
[2]
40
[3]
50
[4]
Live Variables & Invariants
status:Initialized
pattern:Unique Paths
Step 1 / 3
33%
Solution Code
1
function uniquePaths(m: number, n: number): number {
2
  const dp = Array.from({ length: m }, () => new Array(n).fill(1));
3
  for (let r = 1; r < m; r++) {
4
    for (let c = 1; c < n; c++) dp[r][c] = dp[r - 1][c] + dp[r][c - 1];
5
  }
6
  return dp[m - 1][n - 1];
7
}
LeetCode IDE Console

Test Cases

3 cases from Blind 75 & NeetCode 150

Ask for a hint whenever you get stuck.