Study Plans
Choose a one-week review, a one-month foundation, or a three-month course. Adjust the pace to your starting point and track completed blocks in this browser.
On This Page
What to Focus On At Each Level
Not everyone starts from the same place. Figure out where you are, then focus your energy where it matters most.
- Implement basic data structures from scratch
- Get comfortable with recursion (really comfortable)
- Build confidence with a varied selection of easy problems before moving on
- Focus on arrays, strings, hash maps, and linked lists
- Goal: solve representative easy problems and explain their complexity
- Learn the 20 patterns โ study 3-4 problems per pattern
- Focus on trees, graphs, BFS/DFS, and sliding window
- Start DP (1D first, then 2D)
- Time yourself: 25 min per medium
- Goal: solve unfamiliar medium problems independently, then review errors
- Hards are usually 2+ patterns combined
- Master segment trees, monotonic structures, advanced DP
- Practice under pressure โ mock interviews, not solo grinding
- Focus on communication โ explain your approach before coding
- Goal: explain and implement combinations of patterns on harder problems
The Plans
Arrays, Strings, Hash Maps 6 problems
- Read: Arrays, Hash Maps
- Solve: Pair Sum, Group Anagrams, Product Puzzle, Longest Consecutive Sequence
- Pattern focus: Hash Map lookups โ whenever you think O(nยฒ), ask "can a hash map make this O(n)?"
The O(n) Power Moves 6 problems
- Read: Two Pointers & Sliding Window
- Solve: Triple Zero, Container With Most Water, Longest Unique Run, Smallest Cover
- Pattern focus: Shrink/expand window โ track what's in the window with a hash map. Two pointers converge from ends; sliding window grows from left.
Divide and Conquer 5 problems
- Read: Binary Search, Sorting
- Solve: Rotated Search, Koko Eating Bananas, Merge Intervals, Find Minimum in Rotated Sorted Array
- Pattern focus: Binary search on answer โ "find minimum X such that condition" โ binary search the answer space
Recursion and BFS/DFS 7 problems
- Read: Trees, BFS, DFS
- Solve: Binary Tree Level Order Traversal, Validate Binary Search Tree, Number of Islands, Rotting Oranges, Lowest Common Ancestor of BST
- Pattern focus: Recursive tree structure โ "process root, recurse left, recurse right" solves most tree problems. For graphs: BFS = shortest path, DFS = explore everything.
The Boss Battle 6 problems
- Read: Dynamic Programming
- Solve: Coin Change, Longest Increasing Subsequence, Unique Paths, Word Break
- Pattern focus: Identify the recurrence โ "what decision am I making at each step?" โ define dp[i] as the answer considering the first i elements. Start with recursion + memo, then convert to bottom-up if you have time.
Supporting Cast 7 problems
- Read: Stacks, Heaps, Linked Lists
- Solve: Daily Temperatures, Kth Largest Value, Merge Two Sorted Lists, Linked List Cycle Detection, Min Stack
Simulate the Real Thing 3-4 problems (timed)
- Morning: Review Interview Patterns, Big-O Cheat Sheet
- Afternoon: 3 timed problems (25 min each) โ pick random topics. No peeking at hints.
- Practice talking: Explain your approach out loud before writing code. Interviewers care about your thought process as much as the code.
- Review weak spots: Which pattern gave you the most trouble this week? Do 2 more from that category.
Arrays, Strings, Hash Maps
- Read all three guides thoroughly
- 8 problems: Pair Sum, Group Anagrams, Longest Consecutive Sequence, Product Puzzle, Top K Frequent Elements, Valid Sudoku, Encode and Decode Strings, Subarray Sum Equals K
Linked Lists, Stacks, Queues
- Read guides + implement a linked list from scratch
- 8 problems: Merge Two Sorted Lists, Linked List Cycle Detection, Reorder List, Min Stack, Daily Temperatures, Largest Rectangle in Histogram, Car Fleet โ browse practice library, Evaluate Reverse Polish Notation
Trees & Heaps
- Binary trees, BSTs, traversals (in/pre/post), heaps
- 10 problems: Same Tree, Binary Tree Level Order Traversal, Subtree of Another Tree, Validate Binary Search Tree, Lowest Common Ancestor of BST, Rebuild Tree from Traversals, Kth Smallest Element in BST, Kth Largest Value, Merge K Sorted Lists โ browse practice library, Running Median of a Stream
Two Pointers, Sliding Window, Binary Search
BFS & DFS on Graphs
- Graph representation (adjacency list vs matrix), traversals, connected components
- 8 problems: Number of Islands, Clone Graph, Max Area of Island โ browse practice library, Rotting Oranges, Pacific Atlantic Water Flow, Surrounded Regions, Course Schedule, Graph Valid Tree
Recursion & Backtracking
- Subsets, permutations, combination sum, constraint satisfaction
- 8 problems: Subsets, Permutations, Combination Sum, Combination Sum II โ browse practice library, Unique Multiset Subsets, Word Search, Palindrome Partition โ browse practice library, Letter Combos Phone โ browse practice library
Dynamic Programming โ The Grind
- Day 15: 1D DP โ Climbing Stairs, House Robber, House Robber II โ browse practice library
- Day 16: Subsequences โ Longest Increasing Subsequence, Longest Palindromic Substring โ browse practice library, Palindromic Substrings โ browse practice library
- Day 17: Knapsack & coin problems โ Coin Change, Coin Combination Count, Partition Equal Subset Sum
- Day 18: 2D DP โ Unique Paths, Longest Common Subsequence, Word Break
Greedy, Intervals, Bit Manipulation
Graphs (Advanced), Tries, Union-Find
- Dijkstra, topological sort, prefix trees, disjoint sets
- 10 problems: Network Broadcast Delay, Related practice: Smallest Valid Build Order, Alien Dictionary โ browse practice library, Word and Prefix Index, Word Search II โ browse practice library, First Redundant Network Link, Connected Components โ browse practice library, Accounts Merge โ browse practice library, Min Cost Connect Points โ browse practice library, Cheapest Route with a Stop Limit
Mock Interviews & Weak Spot Drilling
- Daily routine: 1 morning mock interview (2 problems, 50 min total) + afternoon weak-spot drilling
- Mock format: pick 1 medium + 1 medium/hard at random. Timer on. Explain out loud.
- Review Interview Patterns โ for each mock problem, identify which pattern it uses
- 8 problems from weak areas (whichever topics tripped you up most)
- Final day: read through every problem you solved this month. Can you describe the approach in one sentence each?
Weeks 1-2: Every Data Structure, Implemented From Scratch
- Read every guide in the Data Structures section
- 20 easy/medium problems spanning all basic data structures
- For each problem: solve it, think of an alternative approach, analyze both complexities
Weeks 3-4: Core Algorithm Patterns
- Two pointers, sliding window, binary search, BFS, DFS, sorting, backtracking
- 30 problems โ at least 4 per pattern
- For each problem: solve it, then find a better solution, then explain both approaches out loud
- End-of-month test: 5 random medium problems, 25 min each, no hints. Target: solve 3 of 5.
Weeks 5-6: Dynamic Programming Deep Dive
- Week 5: 1D DP โ subsequence DP โ knapsack variants (0/1, unbounded, bounded)
- Week 6: 2D DP โ interval DP โ bitmask DP (for n โค 20)
- 25 problems, escalating difficulty โ start with easies, end with hards
- Focus on identifying the state โ what information do you need to make the next decision? That's your dp[] dimensions.
- For every DP problem: write the recurrence FIRST, then code
Weeks 7-8: Graph Algorithms & Greedy
- Dijkstra, Bellman-Ford, topological sort, MST (Kruskal + Prim), Union-Find with rank + path compression
- Greedy: exchange argument proofs, activity selection, Huffman intuition
- 25 problems โ mix of graph + greedy
- Implement Dijkstra and Kruskal's from memory (then check correctness and explain the invariants)
- End-of-month test: 5 random medium/hard problems, 35 min each. Target: solve 3 of 5.
Weeks 9-10: Advanced Data Structures & String Algorithms
- Segment trees (range query + point update), Fenwick tree (BIT), monotonic deque
- String matching: KMP, Rabin-Karp, Z-algorithm
- 20 hard problems โ these show up in L5+/Staff interviews at FAANG
- Read: Segment Trees, String Matching, Network Flow
Weeks 11-12: Mock Interviews & Full Simulation
- 3-4 mock interviews per week โ use Pramp, Interviewing.io, or a friend
- Time yourself strictly: 20 min for mediums, 35 min for hards. If you can't solve it in time, stop and study the solution.
- After each mock: write down what pattern it was, what you missed, and what you'd do differently
- 30 problems from contest archives (LeetCode weekly contests) โ trains speed under pressure
- Practice a short approach explanation before coding, including assumptions and tradeoffs
Mock Interview Format
Practicing problems solo is necessary but not sufficient. Real interviews have pressure, time limits, and another person watching. Here's how to simulate that.
Standard 45-Minute Technical Interview
- 0:00 โ 2:00
Read the problem. Ask clarifying questions. "Can the input be empty? Are values always positive? Is it sorted?" โ even if you think you know, asking shows maturity. - 2:00 โ 5:00
Talk through your approach. "I'm thinking this is a sliding window problem because we need a contiguous subarray. I'll maintain a window and shrink when the constraint breaks." Don't start coding yet. - 5:00 โ 7:00
Discuss complexity. "This approach is O(n) time, O(k) space for the hash map." Interviewer may push for optimization here. - 7:00 โ 30:00
Code the solution. Talk as you go. Name your variables clearly. Handle edge cases inline ("I'll check for empty input here"). Don't go silent for more than 30 seconds. - 30:00 โ 38:00
Test with examples. Walk through your code with the given example step-by-step. Then test an edge case (empty input, single element, all same values). - 38:00 โ 45:00
Discussion. Interviewer may ask: "Can you optimize this? What if the input doesn't fit in memory? What's the worst case?" Have answers ready.
How to Practice Solo
- Set a timer. 25 minutes for mediums, 40 for hards. When it dings, stop โ even if you're close. This trains you to work under pressure.
- Talk out loud. Sounds silly alone, but it builds the habit. In the real interview, going silent for 5 minutes kills your chances.
- Write on paper or a plain editor. No autocomplete, no syntax highlighting for at least some practice sessions. Interview whiteboards don't have IntelliSense.
- Grade yourself honestly. If you looked at a hint, that's a fail โ mark it for re-attempt in 3 days.
- Review optimally. After solving, always check if a cleaner solution exists. Study it. Can you write it from memory tomorrow?
Common Mistakes in Interview Prep
Use these checks to keep practice focused and identify what needs another attempt.
โ Grinding random problems without learning patterns
Group problems by pattern, but include unfamiliar variants so you practice choosing an approach rather than recalling a solution.
โ Organize by pattern. Do 4-5 problems per pattern, not 50 random ones.
โ Looking at the solution after 5 minutes
Give yourself time to state a baseline solution and explore alternatives before reading a hint. If you are stuck, use the smallest useful hint, then solve it again independently.
โ Try a focused 20-minute attempt, then adjust the limit to the problem and your experience.
โ Never revisiting problems you got wrong
You solved it with help on Monday. By Friday, can you solve it again from scratch? Probably not, unless you revisited it. Spaced repetition matters.
โ Re-attempt failed problems 3 days later, then 7 days later. Keep revisiting any approach you cannot yet explain or reconstruct.
โ Only practicing easy problems
Easy problems develop fundamentals. Add medium problems and occasional harder combinations once those fundamentals are reliable; actual interview formats vary.
โ Spend 60% of your time on mediums, 20% on easies (warm-up), 20% on hards (stretch).
โ Not practicing under time pressure
You can solve a medium in 45 minutes at home with Stack Overflow open? Great, but the interview gives you 25 minutes with someone watching. The pressure changes everything.
โ Include timed mock sessions alongside slower learning and review sessions.
โ Ignoring communication skills
Two candidates solve the same problem. One silently codes for 20 minutes. The other explains their thought process, discusses tradeoffs, and walks through test cases. Same code, different outcomes. Clear explanations make your reasoning and tradeoffs easier to assess.
โ Practice explaining your approach out loud, even when alone. It's a skill that atrophies without practice.
โ Starting to code before having a plan
You read the problem, immediately start typing, realize your approach doesn't work at line 30, and now you've wasted 15 minutes. This happens in real interviews and it's devastating.
โ Spend 3-5 minutes thinking BEFORE writing any code. Write pseudocode or a bullet-point plan. Confirm the approach with the interviewer. Then code.
โ Skipping complexity analysis
You solved the problem! But when they ask "what's the time complexity?" you mumble "uh, O(n)... I think?" This signals you don't understand what you wrote.
โ Analyze time AND space complexity for every problem you solve. Make it automatic. Check the Big-O cheat sheet until it's second nature.
The Problem-Solving Framework (Use In Every Interview)
- Clarify. Restate the problem. Ask about edge cases, constraints, input types.
- Examples. Work through the given example by hand. Create your own edge case.
- Brute force. State the obvious approach and its complexity. "I could check all pairs in O(nยฒ), but let me see if I can do better."
- Optimize. Apply pattern recognition. "The sorted input suggests two pointers for O(n)."
- Walk through. Explain your optimized approach step by step before coding.
- Code. Write clean, readable code with good variable names.
- Test. Trace through your code with examples. Check edge cases.
- Analyze. State time and space complexity. Mention potential further optimizations.