Stop collecting solutions.
Build pattern memory.
Follow one clear roadmap. For each pattern, learn the recognition clue, state the invariant, implement the move in Rust, and retrieve it later without peeking.
Know what comes next.
Click any roadmap node to see exactly what the pattern means, how to recognize it, which Rust moves matter, and which problems to complete.
See all 18 patterns →Learn the move, then use it.
Binary Search
Sorted input and a "find the boundary" question? Three templates cover every variant — exact match, leftmost, and search-on-answer. Learn where the pointers land and stop guessing at `<` vs `<=`.
Open track →11 focused problemsLinked Lists
Pointer choreography without the segfaults. Reverse in place, find the cycle with fast/slow, merge two sorted lists. Once you see the moves, the "hard" ones are just the easy ones stacked.
Open track →6 focused problemsSliding Window
Two pointers, one window. Grow it to include, shrink it to stay valid, track the best as you go. Fixed-size or variable — every window problem is the same loop with a different invariant.
Open track →One repeatable habit.
- RecognizeName the clue before choosing a data structure.
- ReasonState what your pointers, stack, map, or DP state means.
- RetrieveRedo it later in Rust without replaying the solution.