From e9f76a32be89da05c73b03074139c9a258e77d94 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Mon, 28 Sep 2026 12:39:28 -0400 Subject: [PATCH] feat: complete lc-62 --- .../multi-d-grid-dp/62-unique-paths.mdx | 40 ++++++++++++++ .../multi-d-grid-dp/meta.ts | 3 ++ apps/docs/content/guides/combinatorics.mdx | 8 +++ apps/docs/redirects.ts | 1 + work/1/Medium/Math/62.unique-paths.py | 53 +++++++++++++++++++ 5 files changed, 105 insertions(+) create mode 100644 apps/docs/content/(05-decision-space)/multi-d-grid-dp/62-unique-paths.mdx create mode 100644 apps/docs/content/(05-decision-space)/multi-d-grid-dp/meta.ts create mode 100644 apps/docs/content/guides/combinatorics.mdx create mode 100644 work/1/Medium/Math/62.unique-paths.py diff --git a/apps/docs/content/(05-decision-space)/multi-d-grid-dp/62-unique-paths.mdx b/apps/docs/content/(05-decision-space)/multi-d-grid-dp/62-unique-paths.mdx new file mode 100644 index 0000000..aa659c7 --- /dev/null +++ b/apps/docs/content/(05-decision-space)/multi-d-grid-dp/62-unique-paths.mdx @@ -0,0 +1,40 @@ +--- +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] +``` diff --git a/apps/docs/content/(05-decision-space)/multi-d-grid-dp/meta.ts b/apps/docs/content/(05-decision-space)/multi-d-grid-dp/meta.ts new file mode 100644 index 0000000..29eb0a1 --- /dev/null +++ b/apps/docs/content/(05-decision-space)/multi-d-grid-dp/meta.ts @@ -0,0 +1,3 @@ +import { defineMeta } from "blume"; + +export default defineMeta({ title: "Multi-D / Grid DP", order: 22, icon: "table", display: "group" }); diff --git a/apps/docs/content/guides/combinatorics.mdx b/apps/docs/content/guides/combinatorics.mdx new file mode 100644 index 0000000..2efea08 --- /dev/null +++ b/apps/docs/content/guides/combinatorics.mdx @@ -0,0 +1,8 @@ +--- +title: "Combinatorics" +list: "https://leetcode.com/problem-list/combinatorics/" +--- + +:::note +This guide has not been written yet. The LeetCode list above has every problem tagged Combinatorics. +::: diff --git a/apps/docs/redirects.ts b/apps/docs/redirects.ts index bbf25a4..c922964 100644 --- a/apps/docs/redirects.ts +++ b/apps/docs/redirects.ts @@ -16,6 +16,7 @@ export default [ { from: "/48", to: "/matrix-index-math/rotate-image" }, { from: "/49", to: "/hash-table/group-anagrams" }, { from: "/54", to: "/matrix-index-math/spiral-matrix" }, + { from: "/62", to: "/multi-d-grid-dp/unique-paths" }, { from: "/70", to: "/1d-dynamic-programming/climbing-stairs" }, { from: "/73", to: "/matrix-index-math/set-matrix-zeroes" }, { from: "/74", to: "/binary-search/search-a-2d-matrix" }, diff --git a/work/1/Medium/Math/62.unique-paths.py b/work/1/Medium/Math/62.unique-paths.py new file mode 100644 index 0000000..8c36c7c --- /dev/null +++ b/work/1/Medium/Math/62.unique-paths.py @@ -0,0 +1,53 @@ +""" +62. Unique Paths +Difficulty: Medium +https://leetcode.com/problems/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 * 10^9. + + + +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 +""" + + +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]