docs(docs): add meta files and reorganize topics with updated badges and directory structure

This commit is contained in:
Prad Nukala committed 2026-09-21 17:16:10 -04:00
1 parent f9e69960c4
commit 7c5061dcd1
66 files changed
+246 -46

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Array" });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Binary Search</Badge>
<Badge variant="accent">Array</Badge>
::::warning
Notice that rotating an array [a[0], a[1], a[2], ..., a[n-1]] 1 time results in the array [a[n-1], a[0], a[1], a[2], ..., a[n-2]].
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Binary Search</Badge>
<Badge variant="accent">Array</Badge>
::::warning
You must write an algorithm with O(log n) runtime complexity.
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Binary Search</Badge>
<Badge variant="accent">Array</Badge>
::::warning
You must write an algorithm with O(log n) runtime complexity.
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Binary Search</Badge>
<Badge variant="accent">Array</Badge>
::::warning
You must write an algorithm with O(log n) runtime complexity.
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Binary Search</Badge>
<Badge variant="accent">Array</Badge>
::::warning
You must write a solution in O(log(m * n)) time complexity.
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Binary Search</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `piles = [3,6,7,11], h = 8`
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Binary Search", order: 5 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Binary Search Tree</Badge>
<Badge variant="accent">Tree</Badge>
::::warning
If the BST is modified often (i.e., we can do insert and delete operations) and you need to find the kth smallest frequently, how would you optimize?
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Binary Search Tree</Badge>
<Badge variant="accent">Tree</Badge>
### Example 1:
- Input: `root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Binary Search Tree</Badge>
<Badge variant="accent">Tree</Badge>
### Example 1:
- Input: `root = [2,1,3]`
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Binary Search Tree", order: 13 });
@@ -0,0 +1,64 @@
---
title: '133. Clone Graph'
description: Given a reference of a node in a connected undirected graph
sidebar:
label: 'Clone Graph'
badge: 'Medium'
---
<Badge variant="accent">Hash Table</Badge>
### Example 1:
- Input: `adjList = [[2,4],[1,3],[2,4],[1,3]]`
- Output: `[[2,4],[1,3],[2,4],[1,3]]`
- Explanation: There are `4` nodes in the graph. 1st `node` (val = 1)'s neighbors are 2nd `node` (val = `2`) and 4th `node` (val = `4`). 2nd `node` (val = 2)'s neighbors are 1st `node` (val = `1`) and 3rd `node` (val = `3`). 3rd `node` (val = 3)'s neighbors are 2nd `node` (val = `2`) and 4th `node` (val = `4`). 4th `node` (val = 4)'s neighbors are 1st `node` (val = `1`) and 3rd `node` (val = `3`).
### Example 2:
- Input: `adjList = [[]]`
- Output: `[[]]`
- Explanation: Note that the input contains one empty list. The graph consists of only one `node` with val = `1` and it does not have any neighbors.
### Example 3:
- Input: `adjList = []`
- Output: `[]`
- Explanation: This an empty graph, it does not have any nodes.
### Constraints:
- The number of nodes in the graph is in the range [0, 100].
- `1 <= Node.val <= 100`
- Node.val is unique for each node.
- There are no repeated edges and no self-loops in the graph.
- The Graph is connected and all nodes can be visited starting from the given node.
## Solution
```py
"""
# Definition for a Node.
class Node:
def __init__(self, val = 0, neighbors = None):
self.val = val
self.neighbors = neighbors if neighbors is not None else []
"""
from typing import Optional
class Solution:
def cloneGraph(self, node: Optional["Node"]) -> Optional["Node"]:
oldToNew = {}
def dfs(node):
if node in oldToNew:
return oldToNew[node]
copy = Node(node.val)
oldToNew[node] = copy
for n in node.neighbors:
copy.neighbors.append(dfs(n))
return copy
return dfs(node) if node else None
```
@@ -0,0 +1,51 @@
---
title: '200. Number of Islands'
description: Given an m x n 2D binary grid grid which represents a map of '1's (land) and '0's (water), return the number of islands
sidebar:
label: 'Number of Islands'
badge: 'Medium'
---
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"] ]`
- Output: `1`
### Example 2:
- Input: `grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"] ]`
- Output: `3`
### Constraints:
- `m == grid.length`
- `n == grid[i].length`
- `1 <= m, n <= 300`
- grid[i][j] is '0' or '1'.
## Solution
```py
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
rows, cols = len(grid), len(grid[0])
def dfs(r, c):
if r < 0 or r >= rows or c < 0 or c >= cols or grid[r][c] != "1":
return
else:
grid[r][c] = "0"
dfs(r, c + 1) # right
dfs(r + 1, c) # bottom
dfs(r, c - 1) # left
dfs(r - 1, c) # top
num_islands = 0
for r in range(rows):
for c in range(cols):
if grid[r][c] == "1":
num_islands += 1
dfs(r, c)
return num_islands
```
@@ -0,0 +1,33 @@
---
title: '417. Pacific Atlantic Water Flow'
description: There is an m x n rectangular island that borders both the Pacific Ocean and Atlantic Ocean. The Pacific Ocean touches the island's left and top edges, and the Atlantic Ocean touches the island's right and bottom edges
sidebar:
label: 'Pacific Atlantic Water Flow'
badge: 'Medium'
---
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `heights = [[1,2,2,3,5],[3,2,3,4,4],[2,4,5,3,1],[6,7,1,4,5],[5,1,1,2,4]]`
- Output: `[[0,4],[1,3],[1,4],[2,2],[3,0],[3,1],[4,0]]`
- Explanation: The following cells can flow to the Pacific and Atlantic oceans, as shown below: `[0,4]`: `[0,4]` -> Pacific Ocean `[0,4]` -> Atlantic Ocean `[1,3]`: `[1,3]` -> `[0,3]` -> Pacific Ocean `[1,3]` -> `[1,4]` -> Atlantic Ocean `[1,4]`: `[1,4]` -> `[1,3]` -> `[0,3]` -> Pacific Ocean `[1,4]` -> Atlantic Ocean `[2,2]`: `[2,2]` -> `[1,2]` -> `[0,2]` -> Pacific Ocean `[2,2]` -> `[2,3]` -> `[2,4]` -> Atlantic Ocean `[3,0]`: `[3,0]` -> Pacific Ocean `[3,0]` -> `[4,0]` -> Atlantic Ocean `[3,1]`: `[3,1]` -> `[3,0]` -> Pacific Ocean `[3,1]` -> `[4,1]` -> Atlantic Ocean `[4,0]`: `[4,0]` -> Pacific Ocean `[4,0]` -> Atlantic Ocean Note that there are other possible paths for these cells to flow to the Pacific and Atlantic oceans.
### Example 2:
- Input: `heights = [[1]]`
- Output: `[[0,0]]`
- Explanation: The water can flow from the only cell to the Pacific and Atlantic oceans.
### Constraints:
- `m == heights.length`
- `n == heights[r].length`
- `1 <= m, n <= 200`
- `0 <= heights[r][c] <= 10^5`
## Solution
```py
class Solution:
def pacificAtlantic(self, heights: list[list[int]]) -> list[list[int]]:
```
+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Graph DFS", order: 16 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Hash Table</Badge>
<Badge variant="accent">Array</Badge>
::::warning
Can you come up with an algorithm that is less than O(n^2) time complexity?
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Hash Table</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `nums = [1,2,3,1]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Hash Table</Badge>
<Badge variant="accent">Array</Badge>
::::warning
Your algorithm's time complexity must be better than O(n log n), where n is the array's size.
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Hash Table</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `strs = ["eat","tea","tan","ate","nat","bat"]`
+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Hash Table", order: 1 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Heap / Priority Queue</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `nums = [3,2,1,5,6,4], k = 2`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Hard'
---
<Badge variant="accent">Heap / Priority Queue</Badge>
<Badge variant="accent">Linked List</Badge>
### Example 1:
- Input: `lists = [[1,4,5],[1,3,4],[2,6]]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Heap / Priority Queue</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `points = [[1,3],[-2,2]], k = 1`
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Heap", order: 14 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Hybrid Structures</Badge>
<Badge variant="accent">Hash Table</Badge>
### Example 1:
- Input: ``
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Hybrid Structures</Badge>
<Badge variant="accent">Linked List</Badge>
### Example 1:
- Input: `l1 = [2,4,3], l2 = [5,6,4]`
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Hybrid Structures", order: 9 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Linked List</Badge>
<Badge variant="accent">Hash Table</Badge>
::::warning
Can you solve it using O(1) (i.e. constant) memory?
+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Linked List", order: 8 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Matrix Index Math</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `matrix = [[1,2,3],[4,5,6],[7,8,9]]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Matrix Index Math</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `matrix = [[1,2,3],[4,5,6],[7,8,9]]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Matrix Index Math</Badge>
<Badge variant="accent">Array</Badge>
::::warning
You must do it in place.
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Matrix Index Math", order: 10 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Monotonic Stack</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `temperatures = [73,74,75,71,69,72,76,73]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Monotonic Stack</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3]`
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Monotonic Stack", order: 7 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Prefix Sum</Badge>
<Badge variant="accent">Array</Badge>
::::warning
You must write an algorithm that runs in O(n) time and without using the division operation.
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Prefix Sum</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `["NumArray", "sumRange", "sumRange", "sumRange"]` `[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Prefix Sum</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `nums = [1,1,1], k = 2`
+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Prefix Sum", order: 2 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Sliding Window</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `prices = [7,1,5,3,6,4]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Sliding Window</Badge>
<Badge variant="accent">Hash Table</Badge>
### Example 1:
- Input: `s = "abcabcbb"`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Sliding Window</Badge>
<Badge variant="accent">Hash Table</Badge>
### Example 1:
- Input: `s = "ABAB", k = 2`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Sliding Window</Badge>
<Badge variant="accent">Hash Table</Badge>
### Example 1:
- Input: `s1 = "ab", s2 = "eidbaooo"`
@@ -1,6 +1,7 @@
---
title: Sliding Window
description: 'Sliding window is a specialized two-pointer family where the pointers define a contiguous interval and you maintain information about that entire interval as it moves.'
hidden: true
---
:::warning
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Sliding Window", order: 4 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Stack</Badge>
<Badge variant="accent">Array</Badge>
### Example 1:
- Input: `tokens = ["2","1","+","3","*"]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Stack</Badge>
<Badge variant="accent">String</Badge>
### Example 1:
- Input: `s = "()"`
+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Stack", order: 6 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Tree BFS</Badge>
<Badge variant="accent">Tree</Badge>
### Example 1:
- Input: `root = [3,9,20,null,null,15,7]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Tree BFS</Badge>
<Badge variant="accent">Tree</Badge>
### Example 1:
- Input: `root = [3,1,4,3,null,1,5]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Tree BFS</Badge>
<Badge variant="accent">Tree</Badge>
### Example 1:
- Input: `root = [1,2,3,null,5,null,4]`
+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Tree BFS", order: 12 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Tree DFS</Badge>
<Badge variant="accent">Tree</Badge>
### Example 1:
- Input: `root = [3,9,20,null,null,15,7]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Tree DFS</Badge>
<Badge variant="accent">Tree</Badge>
### Example 1:
- Input: `root = [4,2,7,1,3,6,9]`
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Tree DFS</Badge>
<Badge variant="accent">Tree</Badge>
### Example 1:
- Input: `root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1`
+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Tree DFS", order: 11 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Trie</Badge>
<Badge variant="accent">Hash Table</Badge>
### Example 1:
- Input: ``
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Trie</Badge>
<Badge variant="accent">String</Badge>
### Constraints:
@@ -98,7 +98,7 @@ class WordDictionary:
# Your WordDictionary object will be instantiated and called as such:
# obj = WordDictionary()
# obj.addWord(word)
# param_2 = obj.search(word)
# param_3 = obj.search(word)
```
## Explanation
+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Trie", order: 15 });
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Two Pointers</Badge>
<Badge variant="accent">Array</Badge>
::::warning
Notice that you may not slant the container.
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Two Pointers</Badge>
<Badge variant="accent">Array</Badge>
::::warning
Notice that the solution set must not contain duplicate triplets.
@@ -6,7 +6,7 @@ sidebar:
badge: 'Medium'
---
<Badge variant="accent">Two Pointers</Badge>
<Badge variant="accent">Array</Badge>
::::warning
Your solution must use only constant extra space.
@@ -6,7 +6,7 @@ sidebar:
badge: 'Easy'
---
<Badge variant="accent">Two Pointers</Badge>
<Badge variant="accent">Array</Badge>
::::warning
Squaring each element and sorting the new array is very trivial, could you find an O(n) solution using a different approach?
+3
View File
@@ -0,0 +1,3 @@
import { defineMeta } from "blume";
export default defineMeta({ title: "Two Pointers", order: 3 });