Data Structures & Algorithms — Your Course
The full 90-day plan as a book: 93 pages in true day order — pattern lessons on teaching days, runnable practice pages on revision and mock days. Start at Day 1 and use Next → to walk the plan.
How to use a lesson. Read it, take the quiz, then solve its problems on LeetCode using predict → attempt → compare → encode. A problem is done when you can re-derive it — not when the tests pass. On revision and mock days, the page IS the session: open it and run the checklist.
Week 1–4 · Arrays & Hashing · Days 1–7
- Lesson 1 — The Seen Question Day 1
- Lesson 2 — Greedy: Carry the Best-So-Far Day 1
- Lesson 3 — Kadane: reset when the past hurts you Day 2
- Lesson 4 — Products without division Day 3
- Lesson 5 -- Two Pointers, Same Direction Day 3
- Lesson 6 — Two pointers, converging Day 4
- Lesson 7 — Boyer-Moore Majority Vote Day 4
- Lesson 8 — The XOR trick Day 5
- Lesson 9 — Prefix sums: precompute once Day 5–6
- Day 06 — Revision: Arrays week Day 6
- Day 07 — Mixed practice + mock review: Arrays Day 7
Strings & Sliding Window · Days 8–14
- Lesson 10 — Frequency Counting Day 8 & 12
- Lesson 11 — Two Pointers on Strings Day 8
- Lesson 12 — Sliding Window I: The Shrinking Rule Day 9
- Lesson 13 — Sliding Window II: Validity With a Budget Day 10
- Lesson 14 — Sliding Window III: Minimum Window Day 11
- Lesson 15 — Expand Around Center Day 13
- Day 13 — Revision: Strings & Sliding Window Day 13
- Day 14 — Mock: 3 problems, 45 minutes Day 14
Stack · Days 15–21
Linked List · Days 22–30
- Lesson 20 — Reversing a Linked List Day 22
- Lesson 21 — The dummy node trick Day 23
- Lesson 22 — Floyd's Fast and Slow Pointers Day 24
- Lesson 23 — Gap Pointers: n Apart Day 25
- Lesson 24 — Composing Linked-List Primitives Day 26
- Lesson 25 — Cloning with a map Day 27
- Day 28 — Revision: Linked List week Day 28
- Day 29 — Mixed practice: Linked List Day 29
- Day 30 — Mock: Full Month 1 Day 30
Trees · Days 31–44
- Lesson 28 — Trees I: what a traversal is Day 31
- Lesson 29 — Trees II: Trust the Recursion Day 32
- Lesson 30 — Trees III: walking two trees at once Day 33
- Lesson 31 — Trees IV: BFS and levels Day 34 & 39
- Lesson 32 — Trees V: Piggyback on Height Day 35–36
- Day 37 — Revision: Trees basics Day 37
- Lesson 33 — Trees VI: Lowest Common Ancestor Day 38
- Lesson 34 — Trees VII: Trees as Strings Day 40
- Lesson 35 — Trees VIII: root-to-leaf paths Day 41
- Lesson 36 — Trees IX: Rebuilding from Traversals Day 42
- Day 43 — Revision: Advanced trees Day 43
- Day 44 — Mock: 3 tree problems, 60 minutes Day 44
Heap · Days 45–51
Graphs · Days 52–60
- Lesson 41 - Graphs I: Flooding a Grid Day 52
- Lesson 42 — Graphs II: cloning with a map Day 53
- Lesson 43 - Graphs III: prerequisites and cycles Day 54
- Lesson 44 — Graphs IV: search backwards Day 55
- Lesson 45 — Graphs V: BFS on invisible graphs Day 56
- Lesson 46 — Graphs VI: Dijkstra, BFS with weights Day 57
- Day 58 — Revision: Graphs week Day 58
- Day 59 — Mixed practice: Graphs Day 59
- Day 60 — Mock: Full Month 2 Day 60
Dynamic Programming · Days 61–74
- Lesson 47 - DP I: the four questions Day 61
- Lesson 48 — DP II: take it or skip it Day 62
- Lesson 49 — DP III: fewest coins Day 63
- Lesson 50 — DP IV: longest increasing subsequence Day 64
- Lesson 51 — DP V: 0/1 knapsack Day 65
- Day 66 — Revision: DP basics Day 66
- Day 67 — Mixed practice: DP basics Day 67
- Lesson 52 - DP VI: two strings, one grid Day 68
- Lesson 53 — DP VII: edit distance Day 69
- Lesson 54 — DP VIII: Counting With Constraints Day 70
- Lesson 56 — DP X: interval DP Day 71
- Lesson 55 — DP IX: Segmentable Prefixes Day 72
- Day 73 — Revision: Advanced DP Day 73
- Day 74 — Mock: 3 DP problems, 60 minutes Day 74
System Design · Days 75–82
- Lesson 57 — System Design I: Scale, Latency, CAP Day 75
- Lesson 58 — System Design II: caching Day 76
- Lesson 59 — System Design III: Load Balancing Day 77
- Lesson 60 — System Design IV: database choices Day 78
- Lesson 61 — System Design V: URL shortener Day 79
- Lesson 62 — System Design VI: Rate Limiter Day 80
- Lesson 63 — System Design VII: a chat system Day 81
- Day 82 — Revision: redraw every design Day 82
Final Stretch · Mocks · Days 83–90
- Day 83 — Mock: DSA + System Design I Day 83
- Day 84 — Mock: DSA + System Design II Day 84
- Day 85 — Mock: DSA + System Design III Day 85
- Day 86 — Mock: DSA + System Design IV Day 86
- Day 87 — Mock: DSA + System Design V Day 87
- Day 88 — Full mock interview day Day 88
- Day 89 — Final revision: your weak list Day 89
- Day 90 — Final mock + confidence day Day 90
Appendix · How-to protocols · reference
Reference sheets · printable · Python / Go / TypeScript / C++
Stuck or curious? Ask your teacher (the agent) — that's what it's for.