Pick the timeline
you actually have
Same pattern sequence either way. The difference is pace, depth per pattern, and how hard the job search runs alongside it.
- ·You have most of the day and want to be interview-ready fast
- ·You have a specific interview scheduled, or severance running out
- ·You can protect a 90-minute morning block five days a week
Your week, blocked out
Put these in a real calendar with real alerts. The times are a template — shift them to your chronotype, but keep the shape: hardest work first, review daily, one long intake block, one full day off.
Hardest cognitive work goes first, when you are freshest. Never start the day with email.
Re-solve what is due today. This is the step that converts "I have seen it" into "I can write it".
Median time-to-hire runs about two months, so the pipeline has to run in parallel with prep — not after it.
Weighted heavily at mid-level and above. One design per session, spoken aloud, whiteboard or Excalidraw.
Read the next pattern end to end, work the visualizers, write the templates from memory.
Burnout at week 8 ends more searches than weak dynamic programming does.
About 20–25 hrs. If you miss a block, skip it — do not stack two into one day. The schedule works because it repeats, not because any single session is long.
Imports as a repeating series for the whole 12 weeks, each with a 10-minute heads-up. A calendar alert you already trust beats another app asking for your attention.
The 12-week schedule
Dependency-ordered: nothing asks you to know a pattern you have not met yet.
Hash maps, stacks, queues — the structures every other pattern is built on. Plus the Python stdlib moves that make interview code fast to write.
Your first two real patterns. Both are one-pass linear scans; learn to spot which one a problem is asking for.
Prefix sums, Kadane’s and in-place tricks, then string-specific machinery: expand-around-center, frequency keys, and why += in a loop is quadratic.
Binary search — including binary search on the answer, which most candidates never practise — then the bit tricks that turn a whole Blind-75 category into code you can actually explain.
Pointer surgery. Reversal and dummy heads must be muscle memory; Floyd’s cycle detection is the classic follow-up.
Tree structure and the BST invariant, then depth-first search proper: recursion, explicit stacks, islands, path problems. The highest-leverage block in the plan.
Breadth-first search for unweighted shortest paths, then weighted graphs: Dijkstra, topological sort, and minimum spanning trees.
Heaps that stay size k, and the sort-then-sweep interval pattern. Both are formulaic once seen.
Monotonic stack (next-greater-element family) and greedy — including how to tell greedy is actually safe.
Choose, explore, unchoose — plus tries. Slow down here; the recursion tree is the whole game.
Dynamic programming. The heaviest block by design — memoise first, convert to tabulation second, and practise naming the state out loud.
Union-find, then no new patterns: recognition drills, timed mocks, and re-solving everything you flagged.
Solving it once is not learning it
Retrieval beats re-reading, and spaced retrieval beats massed retrieval. When you solve a problem, it re-enters your queue on this schedule.
If you needed the solution, re-solve it from a blank file before you sleep.
The first interval where forgetting has started but recovery is still fast.
If you get it clean here, the pattern is sticking.
Final check. Clean at 21 days means it is yours.
The 25-minute rule
Read the problem, restate it out loud in your own words, and state the brute force before optimizing.
Before writing code, say which pattern this is and why. Wrong guesses here are cheap; wrong guesses 20 minutes in are not.
Stuck at 25 minutes is not failure, it is the signal to look. Grinding for 90 minutes teaches you almost nothing.
Take the idea, close the page, and write the implementation yourself. Copying code creates the illusion of competence.
Same day, empty file, no reference. This is the rep that counts.
Tick it off, and let the +2 / +7 / +21 day queue bring it back.
You are ready when
Not "when I have done N problems" — problem count is an input, not an outcome. These are the outcomes.