From 090f3d671948efcc46d3fddefb0137f1d9dac6a3 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Wed, 2 Sep 2026 16:49:39 -0400 Subject: [PATCH] docs(docs): add new problem pages for Rotate Image, Spiral Matrix, and Add Two Numbers --- apps/docs/content/(array)/48-rotate-image.mdx | 37 ++++++++++++ .../docs/content/(array)/54-spiral-matrix.mdx | 59 +++++++++++++++++++ .../(linked-list)/2-add-two-numbers.mdx | 57 ++++++++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 apps/docs/content/(array)/48-rotate-image.mdx create mode 100644 apps/docs/content/(array)/54-spiral-matrix.mdx create mode 100644 apps/docs/content/(linked-list)/2-add-two-numbers.mdx diff --git a/apps/docs/content/(array)/48-rotate-image.mdx b/apps/docs/content/(array)/48-rotate-image.mdx new file mode 100644 index 0000000..02c2657 --- /dev/null +++ b/apps/docs/content/(array)/48-rotate-image.mdx @@ -0,0 +1,37 @@ +--- +title: '48. Rotate Image' +description: You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise) +sidebar: + label: 'Rotate Image' + badge: 'Medium' +--- + +Matrix Index Math + +### Example 1: +- Input: `matrix = [[1,2,3],[4,5,6],[7,8,9]]` +- Output: `[[7,4,1],[8,5,2],[9,6,3]]` + +### Example 2: +- Input: `matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]` +- Output: `[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]` + +### Constraints: + +- `n == matrix.length == matrix[i].length` +- `1 <= n <= 20` +- `-1000 <= matrix[i][j] <= 1000` + +## Solution + +```py +class Solution: + def rotate(self, matrix: List[List[int]]) -> None: + n = len(matrix) + for r in range(n): + for c in range(r + 1, n): + matrix[r][c], matrix[c][r] = matrix[c][r], matrix[r][c] + + for r in range(n): + matrix[r].reverse() +``` diff --git a/apps/docs/content/(array)/54-spiral-matrix.mdx b/apps/docs/content/(array)/54-spiral-matrix.mdx new file mode 100644 index 0000000..f9043f9 --- /dev/null +++ b/apps/docs/content/(array)/54-spiral-matrix.mdx @@ -0,0 +1,59 @@ +--- +title: '54. Spiral Matrix' +description: Given an m x n matrix, return all elements of the matrix in spiral order +sidebar: + label: 'Spiral Matrix' + badge: 'Medium' +--- + +Matrix Index Math + +### Example 1: +- Input: `matrix = [[1,2,3],[4,5,6],[7,8,9]]` +- Output: `[1,2,3,6,9,8,7,4,5]` + +### Example 2: +- Input: `matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]` +- Output: `[1,2,3,4,8,12,11,10,9,5,6,7]` + +### Constraints: + +- `m == matrix.length` +- `n == matrix[i].length` +- `1 <= m, n <= 10` +- `-100 <= matrix[i][j] <= 100` + +## Solution + +```py +class Solution: + def spiralOrder(self, matrix: List[List[int]]) -> List[int]: + res = [] + top, bottom = 0, len(matrix) - 1 + left, right = 0, len(matrix[0]) - 1 + + while top <= bottom and left <= right: + # 1. Top Row + for c in range(left, right + 1): + res.append(matrix[top][c]) + top += 1 + + # 2. Right Column + for r in range(top, bottom + 1): + res.append(matrix[r][right]) + right -= 1 + + # 3. Bottom Row + if top <= bottom: + for c in range(right, left - 1, -1): + res.append(matrix[bottom][c]) + bottom -= 1 + + # 4. Left Column + if left <= right: + for r in range(bottom, top - 1, -1): + res.append(matrix[r][left]) + left += 1 + + return res +``` diff --git a/apps/docs/content/(linked-list)/2-add-two-numbers.mdx b/apps/docs/content/(linked-list)/2-add-two-numbers.mdx new file mode 100644 index 0000000..be61c28 --- /dev/null +++ b/apps/docs/content/(linked-list)/2-add-two-numbers.mdx @@ -0,0 +1,57 @@ +--- +title: '2. Add Two Numbers' +description: You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list +sidebar: + label: 'Add Two Numbers' + badge: 'Medium' +--- + +Hybrid Structures + +### Example 1: +- Input: `l1 = [2,4,3], l2 = [5,6,4]` +- Output: `[7,0,8]` +- Explanation: `342 + 465 = 807`. + +### Example 2: +- Input: `l1 = [0], l2 = [0]` +- Output: `[0]` + +### Example 3: +- Input: `l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]` +- Output: `[8,9,9,9,0,0,0,1]` + +### Constraints: + +- The number of nodes in each linked list is in the range [1, 100]. +- `0 <= Node.val <= 9` +- It is guaranteed that the list represents a number that does not have leading zeros. + +## Solution + +```py +# Definition for singly-linked list. +# class ListNode: +# def __init__(self, val=0, next=None): +# self.val = val +# self.next = next +class Solution: + def addTwoNumbers( + self, l1: Optional[ListNode], l2: Optional[ListNode] + ) -> Optional[ListNode]: + + dummy = ListNode() + carry = 0 + curr = dummy + while l1 or l2 or carry: + s = (l1.val if l1 else 0) + (l2.val if l2 else 0) + carry + carry, val = divmod(s, 10) + + curr.next = ListNode(val) + curr = curr.next + + l1 = l1.next if l1 else None + l2 = l2.next if l2 else None + + return dummy.next +```