Explore Crabrix
Every lesson and Rust guide.
Browse 742 lesson previews, seven courses and 20 practical articles. A free account opens complete Academy lessons.
Rust blog
- rustup 1.29.2: certificate security and toolchain checks
- Rust 1.100: what changes for 32-bit Windows builds
- Rust infrastructure Q3 2026: crates.io, docs.rs and resilient builds
- Rust text input: buffered reading without lost errors
- Rust traits and generics: choose a clear dispatch boundary
- Rust enums and state machines: make invalid states explicit
- Rust numeric safety: checked arithmetic and honest conversions
- Rust HashMap: count with entry and produce stable reports
- Cargo features: smaller builds and portable dependencies
- Rust pattern matching: handle missing values without panics
- Testing Rust: useful fixtures, boundaries and doctests
- Rust memoization: cache keys, limits and failure handling
- Rust strings and UTF-8: parse text without broken boundaries
- Rust iterators: clear pipelines without extra allocations
- Cargo build.rs: generated code and reliable rebuilds
- Rust 1.99: upgrade your project without guessing
- Ownership in a real Rust program: choose who keeps the data
- Rust errors that help: design a Result your caller can use
- What it means to run a real Rust compiler on an iPhone
- From a Rust lesson to a project you own
Rust Basics
Expressions & Flow
Small Programs
Algorithms
Linear Scans & State
- Linear Scan: Mental Model
- Linear Scan: When to Use It
- Challenge: Linear Scan
- Min/Max Tracking: Mental Model
- Min/Max Tracking: When to Use It
- Challenge: Min/Max Tracking
- Frequency Counting: Mental Model
- Frequency Counting: When to Use It
- Challenge: Frequency Counting
- Running Accumulator: Mental Model
- Running Accumulator: When to Use It
- Challenge: Running Accumulator
- Adjacent Pair Scan: Mental Model
- Adjacent Pair Scan: When to Use It
- Challenge: Adjacent Pair Scan
- Stable Compaction: Mental Model
- Stable Compaction: When to Use It
- Challenge: Stable Compaction
- Predicate Partition: Mental Model
- Predicate Partition: When to Use It
- Challenge: Predicate Partition
- Boyer–Moore Majority Vote: Mental Model
- Boyer–Moore Majority Vote: When to Use It
- Challenge: Boyer–Moore Majority Vote
- Reservoir Sampling: Mental Model
- Reservoir Sampling: When to Use It
- Challenge: Reservoir Sampling
- Floyd State Cycle Detection: Mental Model
- Floyd State Cycle Detection: When to Use It
- Challenge: Floyd State Cycle Detection
Hash Maps & Sets
- Hash Membership: Mental Model
- Hash Membership: When to Use It
- Challenge: Hash Membership
- Hash Frequency Map: Mental Model
- Hash Frequency Map: When to Use It
- Challenge: Hash Frequency Map
- Complement Lookup: Mental Model
- Complement Lookup: When to Use It
- Challenge: Complement Lookup
- Group by Canonical Key: Mental Model
- Group by Canonical Key: When to Use It
- Challenge: Group by Canonical Key
- Value-to-Index Map: Mental Model
- Value-to-Index Map: When to Use It
- Challenge: Value-to-Index Map
- Coordinate Compression: Mental Model
- Coordinate Compression: When to Use It
- Challenge: Coordinate Compression
- Longest Consecutive Set Run: Mental Model
- Longest Consecutive Set Run: When to Use It
- Challenge: Longest Consecutive Set Run
- Bidirectional Mapping: Mental Model
- Bidirectional Mapping: When to Use It
- Challenge: Bidirectional Mapping
- Indexed Randomized Set: Mental Model
- Indexed Randomized Set: When to Use It
- Challenge: Indexed Randomized Set
- Rolling Fingerprint: Mental Model
- Rolling Fingerprint: When to Use It
- Challenge: Rolling Fingerprint
Prefix Sums & Range Queries
- Prefix Sum: Mental Model
- Prefix Sum: When to Use It
- Challenge: Prefix Sum
- Suffix Aggregate: Mental Model
- Suffix Aggregate: When to Use It
- Challenge: Suffix Aggregate
- Prefix/Suffix Balance: Mental Model
- Prefix/Suffix Balance: When to Use It
- Challenge: Prefix/Suffix Balance
- Difference Array: Mental Model
- Difference Array: When to Use It
- Challenge: Difference Array
- Prefix/Suffix Product: Mental Model
- Prefix/Suffix Product: When to Use It
- Challenge: Prefix/Suffix Product
- Prefix XOR: Mental Model
- Prefix XOR: When to Use It
- Challenge: Prefix XOR
- 2D Prefix Sum: Mental Model
- 2D Prefix Sum: When to Use It
- Challenge: 2D Prefix Sum
- Imos Sweep: Mental Model
- Imos Sweep: When to Use It
- Challenge: Imos Sweep
- Fenwick Tree: Mental Model
- Fenwick Tree: When to Use It
- Challenge: Fenwick Tree
- Segment Tree: Mental Model
- Segment Tree: When to Use It
- Challenge: Segment Tree
Two Pointers
- Opposite-End Pointers: Mental Model
- Opposite-End Pointers: When to Use It
- Challenge: Opposite-End Pointers
- Same-Direction Pointers: Mental Model
- Same-Direction Pointers: When to Use It
- Challenge: Same-Direction Pointers
- Slow/Fast Pointers: Mental Model
- Slow/Fast Pointers: When to Use It
- Challenge: Slow/Fast Pointers
- Sorted Two-Sum: Mental Model
- Sorted Two-Sum: When to Use It
- Challenge: Sorted Two-Sum
- Palindrome Pointers: Mental Model
- Palindrome Pointers: When to Use It
- Challenge: Palindrome Pointers
- Three-Sum Reduction: Mental Model
- Three-Sum Reduction: When to Use It
- Challenge: Three-Sum Reduction
- Dutch National Flag: Mental Model
- Dutch National Flag: When to Use It
- Challenge: Dutch National Flag
- Container Area: Mental Model
- Container Area: When to Use It
- Challenge: Container Area
- Backward In-Place Merge: Mental Model
- Backward In-Place Merge: When to Use It
- Challenge: Backward In-Place Merge
- Two-Pointer Rainwater: Mental Model
- Two-Pointer Rainwater: When to Use It
- Challenge: Two-Pointer Rainwater
Sliding Window
- Fixed-Size Window: Mental Model
- Fixed-Size Window: When to Use It
- Challenge: Fixed-Size Window
- Variable-Size Window: Mental Model
- Variable-Size Window: When to Use It
- Challenge: Variable-Size Window
- Last-Seen Unique Window: Mental Model
- Last-Seen Unique Window: When to Use It
- Challenge: Last-Seen Unique Window
- At-Most-K Window: Mental Model
- At-Most-K Window: When to Use It
- Challenge: At-Most-K Window
- Exactly-K by Difference: Mental Model
- Exactly-K by Difference: When to Use It
- Challenge: Exactly-K by Difference
- Frequency-Balanced Window: Mental Model
- Frequency-Balanced Window: When to Use It
- Challenge: Frequency-Balanced Window
- Minimum Cover Window: Mental Model
- Minimum Cover Window: When to Use It
- Challenge: Minimum Cover Window
- Monotonic Deque Window: Mental Model
- Monotonic Deque Window: When to Use It
- Challenge: Monotonic Deque Window
- Rolling Mean and Variance: Mental Model
- Rolling Mean and Variance: When to Use It
- Challenge: Rolling Mean and Variance
- Sliding Median with Two Heaps: Mental Model
- Sliding Median with Two Heaps: When to Use It
- Challenge: Sliding Median with Two Heaps
Stack, Queue & Monotonic Patterns
- Delimiter Stack: Mental Model
- Delimiter Stack: When to Use It
- Challenge: Delimiter Stack
- Postfix Evaluation: Mental Model
- Postfix Evaluation: When to Use It
- Challenge: Postfix Evaluation
- Min Stack: Mental Model
- Min Stack: When to Use It
- Challenge: Min Stack
- Queue from Two Stacks: Mental Model
- Queue from Two Stacks: When to Use It
- Challenge: Queue from Two Stacks
- Next Greater Element: Mental Model
- Next Greater Element: When to Use It
- Challenge: Next Greater Element
- Monotonic Increasing Stack: Mental Model
- Monotonic Increasing Stack: When to Use It
- Challenge: Monotonic Increasing Stack
- Monotonic Decreasing Stack: Mental Model
- Monotonic Decreasing Stack: When to Use It
- Challenge: Monotonic Decreasing Stack
- Circular Monotonic Stack: Mental Model
- Circular Monotonic Stack: When to Use It
- Challenge: Circular Monotonic Stack
- Shunting-Yard Parsing: Mental Model
- Shunting-Yard Parsing: When to Use It
- Challenge: Shunting-Yard Parsing
- Largest Histogram Rectangle: Mental Model
- Largest Histogram Rectangle: When to Use It
- Challenge: Largest Histogram Rectangle
Sorting & Selection
- Insertion Sort: Mental Model
- Insertion Sort: When to Use It
- Challenge: Insertion Sort
- Selection Sort: Mental Model
- Selection Sort: When to Use It
- Challenge: Selection Sort
- Merge Sort: Mental Model
- Merge Sort: When to Use It
- Challenge: Merge Sort
- Quicksort: Mental Model
- Quicksort: When to Use It
- Challenge: Quicksort
- Heap Sort: Mental Model
- Heap Sort: When to Use It
- Challenge: Heap Sort
- Counting Sort: Mental Model
- Counting Sort: When to Use It
- Challenge: Counting Sort
- LSD Radix Sort: Mental Model
- LSD Radix Sort: When to Use It
- Challenge: LSD Radix Sort
- Bucket Sort: Mental Model
- Bucket Sort: When to Use It
- Challenge: Bucket Sort
- Quickselect: Mental Model
- Quickselect: When to Use It
- Challenge: Quickselect
- Median of Medians: Mental Model
- Median of Medians: When to Use It
- Challenge: Median of Medians
Binary Search
- Exact Binary Search: Mental Model
- Exact Binary Search: When to Use It
- Challenge: Exact Binary Search
- Lower Bound: Mental Model
- Lower Bound: When to Use It
- Challenge: Lower Bound
- Upper Bound: Mental Model
- Upper Bound: When to Use It
- Challenge: Upper Bound
- First and Last Position: Mental Model
- First and Last Position: When to Use It
- Challenge: First and Last Position
- Rotated Sorted Search: Mental Model
- Rotated Sorted Search: When to Use It
- Challenge: Rotated Sorted Search
- Peak Binary Search: Mental Model
- Peak Binary Search: When to Use It
- Challenge: Peak Binary Search
- Flattened Matrix Search: Mental Model
- Flattened Matrix Search: When to Use It
- Challenge: Flattened Matrix Search
- Binary Search on the Answer: Mental Model
- Binary Search on the Answer: When to Use It
- Challenge: Binary Search on the Answer
- Exponential Search: Mental Model
- Exponential Search: When to Use It
- Challenge: Exponential Search
- Partition Median: Mental Model
- Partition Median: When to Use It
- Challenge: Partition Median
Linked List Techniques
- Iterative List Reversal: Mental Model
- Iterative List Reversal: When to Use It
- Challenge: Iterative List Reversal
- Middle by Slow/Fast: Mental Model
- Middle by Slow/Fast: When to Use It
- Challenge: Middle by Slow/Fast
- Linked Cycle Detection: Mental Model
- Linked Cycle Detection: When to Use It
- Challenge: Linked Cycle Detection
- Merge Two Sorted Lists: Mental Model
- Merge Two Sorted Lists: When to Use It
- Challenge: Merge Two Sorted Lists
- Gap Pointer Removal: Mental Model
- Gap Pointer Removal: When to Use It
- Challenge: Gap Pointer Removal
- Pointer-Switch Intersection: Mental Model
- Pointer-Switch Intersection: When to Use It
- Challenge: Pointer-Switch Intersection
- Stable List Partition: Mental Model
- Stable List Partition: When to Use It
- Challenge: Stable List Partition
- Reorder by Split, Reverse, Merge: Mental Model
- Reorder by Split, Reverse, Merge: When to Use It
- Challenge: Reorder by Split, Reverse, Merge
- Copy with Random Links: Mental Model
- Copy with Random Links: When to Use It
- Challenge: Copy with Random Links
- Reverse Nodes in K-Groups: Mental Model
- Reverse Nodes in K-Groups: When to Use It
- Challenge: Reverse Nodes in K-Groups
Tree Traversal & BST
- Preorder DFS: Mental Model
- Preorder DFS: When to Use It
- Challenge: Preorder DFS
- Inorder DFS: Mental Model
- Inorder DFS: When to Use It
- Challenge: Inorder DFS
- Postorder DFS: Mental Model
- Postorder DFS: When to Use It
- Challenge: Postorder DFS
- Level-Order BFS: Mental Model
- Level-Order BFS: When to Use It
- Challenge: Level-Order BFS
- Height with Balance Sentinel: Mental Model
- Height with Balance Sentinel: When to Use It
- Challenge: Height with Balance Sentinel
- BST Search and Insert: Mental Model
- BST Search and Insert: When to Use It
- Challenge: BST Search and Insert
- Lowest Common Ancestor: Mental Model
- Lowest Common Ancestor: When to Use It
- Challenge: Lowest Common Ancestor
- Tree Serialize/Deserialize: Mental Model
- Tree Serialize/Deserialize: When to Use It
- Challenge: Tree Serialize/Deserialize
- Tree Diameter: Mental Model
- Tree Diameter: When to Use It
- Challenge: Tree Diameter
- Tree Rerooting DP: Mental Model
- Tree Rerooting DP: When to Use It
- Challenge: Tree Rerooting DP
Heaps & Streaming
- Binary Heap: Mental Model
- Binary Heap: When to Use It
- Challenge: Binary Heap
- Top-K with a Min-Heap: Mental Model
- Top-K with a Min-Heap: When to Use It
- Challenge: Top-K with a Min-Heap
- Kth Statistic in a Stream: Mental Model
- Kth Statistic in a Stream: When to Use It
- Challenge: Kth Statistic in a Stream
- K-Way Heap Merge: Mental Model
- K-Way Heap Merge: When to Use It
- Challenge: K-Way Heap Merge
- Bounded Heap for K Closest: Mental Model
- Bounded Heap for K Closest: When to Use It
- Challenge: Bounded Heap for K Closest
- Median from Two Heaps: Mental Model
- Median from Two Heaps: When to Use It
- Challenge: Median from Two Heaps
- Lazy Heap Deletion: Mental Model
- Lazy Heap Deletion: When to Use It
- Challenge: Lazy Heap Deletion
- Priority Scheduling: Mental Model
- Priority Scheduling: When to Use It
- Challenge: Priority Scheduling
- Meeting Rooms Heap: Mental Model
- Meeting Rooms Heap: When to Use It
- Challenge: Meeting Rooms Heap
- Huffman Merge Heap: Mental Model
- Huffman Merge Heap: When to Use It
- Challenge: Huffman Merge Heap
DFS, BFS & Graph Traversal
- Adjacency List: Mental Model
- Adjacency List: When to Use It
- Challenge: Adjacency List
- Graph DFS: Mental Model
- Graph DFS: When to Use It
- Challenge: Graph DFS
- Graph BFS: Mental Model
- Graph BFS: When to Use It
- Challenge: Graph BFS
- Connected Components: Mental Model
- Connected Components: When to Use It
- Challenge: Connected Components
- Grid Flood Fill: Mental Model
- Grid Flood Fill: When to Use It
- Challenge: Grid Flood Fill
- Bipartite Coloring: Mental Model
- Bipartite Coloring: When to Use It
- Challenge: Bipartite Coloring
- Undirected Cycle Detection: Mental Model
- Undirected Cycle Detection: When to Use It
- Challenge: Undirected Cycle Detection
- Kahn Topological Sort: Mental Model
- Kahn Topological Sort: When to Use It
- Challenge: Kahn Topological Sort
- DFS Topological Sort: Mental Model
- DFS Topological Sort: When to Use It
- Challenge: DFS Topological Sort
- Strongly Connected Components: Mental Model
- Strongly Connected Components: When to Use It
- Challenge: Strongly Connected Components
Shortest Paths, MST & Flow
- Dijkstra: Mental Model
- Dijkstra: When to Use It
- Challenge: Dijkstra
- 0–1 BFS: Mental Model
- 0–1 BFS: When to Use It
- Challenge: 0–1 BFS
- DAG Shortest Path: Mental Model
- DAG Shortest Path: When to Use It
- Challenge: DAG Shortest Path
- Prim Minimum Spanning Tree: Mental Model
- Prim Minimum Spanning Tree: When to Use It
- Challenge: Prim Minimum Spanning Tree
- Kruskal Minimum Spanning Tree: Mental Model
- Kruskal Minimum Spanning Tree: When to Use It
- Challenge: Kruskal Minimum Spanning Tree
- Bellman–Ford: Mental Model
- Bellman–Ford: When to Use It
- Challenge: Bellman–Ford
- Floyd–Warshall: Mental Model
- Floyd–Warshall: When to Use It
- Challenge: Floyd–Warshall
- A* Search: Mental Model
- A* Search: When to Use It
- Challenge: A* Search
- Bidirectional BFS: Mental Model
- Bidirectional BFS: When to Use It
- Challenge: Bidirectional BFS
- Dinic Maximum Flow: Mental Model
- Dinic Maximum Flow: When to Use It
- Challenge: Dinic Maximum Flow
Backtracking & Exhaustive Search
- Subset Generation: Mental Model
- Subset Generation: When to Use It
- Challenge: Subset Generation
- Permutation Backtracking: Mental Model
- Permutation Backtracking: When to Use It
- Challenge: Permutation Backtracking
- Combination Backtracking: Mental Model
- Combination Backtracking: When to Use It
- Challenge: Combination Backtracking
- Combination Sum: Mental Model
- Combination Sum: When to Use It
- Challenge: Combination Sum
- Valid Parentheses Generation: Mental Model
- Valid Parentheses Generation: When to Use It
- Challenge: Valid Parentheses Generation
- Grid Word Search: Mental Model
- Grid Word Search: When to Use It
- Challenge: Grid Word Search
- Palindrome Partitioning: Mental Model
- Palindrome Partitioning: When to Use It
- Challenge: Palindrome Partitioning
- N-Queens: Mental Model
- N-Queens: When to Use It
- Challenge: N-Queens
- Sudoku Constraint Search: Mental Model
- Sudoku Constraint Search: When to Use It
- Challenge: Sudoku Constraint Search
- Meet in the Middle: Mental Model
- Meet in the Middle: When to Use It
- Challenge: Meet in the Middle
Greedy & Interval Methods
- Activity Selection: Mental Model
- Activity Selection: When to Use It
- Challenge: Activity Selection
- Merge Intervals: Mental Model
- Merge Intervals: When to Use It
- Challenge: Merge Intervals
- Insert into Sorted Intervals: Mental Model
- Insert into Sorted Intervals: When to Use It
- Challenge: Insert into Sorted Intervals
- Sweep-Line Events: Mental Model
- Sweep-Line Events: When to Use It
- Challenge: Sweep-Line Events
- Greedy Reach Frontier: Mental Model
- Greedy Reach Frontier: When to Use It
- Challenge: Greedy Reach Frontier
- Greedy Layered Jumps: Mental Model
- Greedy Layered Jumps: When to Use It
- Challenge: Greedy Layered Jumps
- Gas Station Reset: Mental Model
- Gas Station Reset: When to Use It
- Challenge: Gas Station Reset
- Last-Occurrence Partition: Mental Model
- Last-Occurrence Partition: When to Use It
- Challenge: Last-Occurrence Partition
- Deadline Profit Scheduling: Mental Model
- Deadline Profit Scheduling: When to Use It
- Challenge: Deadline Profit Scheduling
- Interval Stabbing: Mental Model
- Interval Stabbing: When to Use It
- Challenge: Interval Stabbing
1D Dynamic Programming
- Top-Down Memoization: Mental Model
- Top-Down Memoization: When to Use It
- Challenge: Top-Down Memoization
- Bottom-Up Tabulation: Mental Model
- Bottom-Up Tabulation: When to Use It
- Challenge: Bottom-Up Tabulation
- Rolling-State DP: Mental Model
- Rolling-State DP: When to Use It
- Challenge: Rolling-State DP
- Take-or-Skip DP: Mental Model
- Take-or-Skip DP: When to Use It
- Challenge: Take-or-Skip DP
- Kadane Maximum Subarray: Mental Model
- Kadane Maximum Subarray: When to Use It
- Challenge: Kadane Maximum Subarray
- Coin Change Minimum: Mental Model
- Coin Change Minimum: When to Use It
- Challenge: Coin Change Minimum
- Word Break DP: Mental Model
- Word Break DP: When to Use It
- Challenge: Word Break DP
- Decode Ways DP: Mental Model
- Decode Ways DP: When to Use It
- Challenge: Decode Ways DP
- Longest Increasing Subsequence: Mental Model
- Longest Increasing Subsequence: When to Use It
- Challenge: Longest Increasing Subsequence
- 0/1 Knapsack: Mental Model
- 0/1 Knapsack: When to Use It
- Challenge: 0/1 Knapsack
2D & Advanced Dynamic Programming
- Grid Path DP: Mental Model
- Grid Path DP: When to Use It
- Challenge: Grid Path DP
- Subset Sum DP: Mental Model
- Subset Sum DP: When to Use It
- Challenge: Subset Sum DP
- Longest Common Subsequence: Mental Model
- Longest Common Subsequence: When to Use It
- Challenge: Longest Common Subsequence
- Edit Distance: Mental Model
- Edit Distance: When to Use It
- Challenge: Edit Distance
- Longest Palindromic Subsequence: Mental Model
- Longest Palindromic Subsequence: When to Use It
- Challenge: Longest Palindromic Subsequence
- Matrix Chain DP: Mental Model
- Matrix Chain DP: When to Use It
- Challenge: Matrix Chain DP
- Interval DP: Mental Model
- Interval DP: When to Use It
- Challenge: Interval DP
- Digit DP: Mental Model
- Digit DP: When to Use It
- Challenge: Digit DP
- Bitmask DP: Mental Model
- Bitmask DP: When to Use It
- Challenge: Bitmask DP
- Tree DP: Mental Model
- Tree DP: When to Use It
- Challenge: Tree DP
Tries & String Matching
- Character Frequency: Mental Model
- Character Frequency: When to Use It
- Challenge: Character Frequency
- String Two Pointers: Mental Model
- String Two Pointers: When to Use It
- Challenge: String Two Pointers
- Run-Length Encoding: Mental Model
- Run-Length Encoding: When to Use It
- Challenge: Run-Length Encoding
- Knuth–Morris–Pratt: Mental Model
- Knuth–Morris–Pratt: When to Use It
- Challenge: Knuth–Morris–Pratt
- Z Algorithm: Mental Model
- Z Algorithm: When to Use It
- Challenge: Z Algorithm
- Rabin–Karp: Mental Model
- Rabin–Karp: When to Use It
- Challenge: Rabin–Karp
- Prefix Trie: Mental Model
- Prefix Trie: When to Use It
- Challenge: Prefix Trie
- Aho–Corasick: Mental Model
- Aho–Corasick: When to Use It
- Challenge: Aho–Corasick
- Suffix Array: Mental Model
- Suffix Array: When to Use It
- Challenge: Suffix Array
- Manacher Palindrome Radii: Mental Model
- Manacher Palindrome Radii: When to Use It
- Challenge: Manacher Palindrome Radii
Math, Bits & Combinatorics
- Euclidean GCD: Mental Model
- Euclidean GCD: When to Use It
- Challenge: Euclidean GCD
- Bitmask Enumeration: Mental Model
- Bitmask Enumeration: When to Use It
- Challenge: Bitmask Enumeration
- XOR Cancellation: Mental Model
- XOR Cancellation: When to Use It
- Challenge: XOR Cancellation
- Sieve of Eratosthenes: Mental Model
- Sieve of Eratosthenes: When to Use It
- Challenge: Sieve of Eratosthenes
- Binary Exponentiation: Mental Model
- Binary Exponentiation: When to Use It
- Challenge: Binary Exponentiation
- Modular Inverse: Mental Model
- Modular Inverse: When to Use It
- Challenge: Modular Inverse
- Binomial Coefficients: Mental Model
- Binomial Coefficients: When to Use It
- Challenge: Binomial Coefficients
- Gray Code: Mental Model
- Gray Code: When to Use It
- Challenge: Gray Code
- Matrix Exponentiation: Mental Model
- Matrix Exponentiation: When to Use It
- Challenge: Matrix Exponentiation
- Miller–Rabin Primality: Mental Model
- Miller–Rabin Primality: When to Use It
- Challenge: Miller–Rabin Primality
Advanced Data Structures
- Sparse Table: Mental Model
- Sparse Table: When to Use It
- Challenge: Sparse Table
- Disjoint Set Union: Mental Model
- Disjoint Set Union: When to Use It
- Challenge: Disjoint Set Union
- Lazy Segment Tree: Mental Model
- Lazy Segment Tree: When to Use It
- Challenge: Lazy Segment Tree
- Randomized Treap: Mental Model
- Randomized Treap: When to Use It
- Challenge: Randomized Treap
- Skip List: Mental Model
- Skip List: When to Use It
- Challenge: Skip List
- Rollback DSU: Mental Model
- Rollback DSU: When to Use It
- Challenge: Rollback DSU
- Mo's Algorithm: Mental Model
- Mo's Algorithm: When to Use It
- Challenge: Mo's Algorithm
- Heavy-Light Decomposition: Mental Model
- Heavy-Light Decomposition: When to Use It
- Challenge: Heavy-Light Decomposition
- Centroid Decomposition: Mental Model
- Centroid Decomposition: When to Use It
- Challenge: Centroid Decomposition
- Suffix Automaton: Mental Model
- Suffix Automaton: When to Use It
- Challenge: Suffix Automaton