Skip to content

Learning Resources

A lightweight map of the study guides in this repository. Everything is written so you can move from concept to practice without wading through fluff.


Start here

  • Algorithm Patterns


    Jump straight into the pattern library with short guides and worked examples.

    Open Overview

  • Data Structures


    Focused notes on arrays, hash tables, heaps, and tries with practice links.

    Browse Structures

  • Interview Preparation


    Frameworks for planning, solving, and communicating under pressure.

    Use Playbook

  • Additional Topics


    Quick hops to staple engineering articles and free resources.

    Reading List

  • Cloud AI Platforms


    Hands-on guides for cloud AI services including Google Vertex AI.

    Explore Cloud AI


Algorithm patterns at a glance

Each pattern links to detailed notes and a representative LeetCode problem.

Pattern Description Links
Sliding Window Optimize contiguous ranges in strings and arrays Notes
Dynamic Programming Break problems into overlapping subproblems and cache results Notes
Two Pointers Traverse from both ends or move pointers together to simplify scans Notes
Fast & Slow Pointers Detect cycles and middle points with offset pointer speeds Notes
Backtracking Explore search spaces with reversible choices Notes · LC 46
Binary Search on Answer Probe candidate solutions to converge on optimal values Notes · LC 875
Greedy Algorithms Make locally optimal choices with provable global wins Notes · LC 45
Heap / Priority Queue Surface extremes quickly for scheduling and top-k problems Notes · LC 347
Monotonic Stack Track next greater/smaller elements efficiently Notes · LC 739
Graph Traversal (BFS/DFS) Systematically explore graphs and grids Notes · LC 200
Trie (Prefix Tree) Speed up prefix queries and dictionary operations Notes · LC 208

How to use these notes

  1. Start with Sliding Window to warm up, then branch into dynamic programming or graph traversal based on your goals.
  2. Keep a notebook nearby and rewrite solutions in your own words; it cements the intuition.
  3. Treat the examples as templates to refine, not scripts to memorize.