Study Plan
A 12-week plan built around the principle: learn deeply, not broadly. It is better to deeply understand 150 problems than to superficially graze 500. Each week introduces a topic, applies it to problems, and reviews the previous week through spaced repetition. By week 12 you will be ready for FAANG-level interviews.
Weeks 1–2: Arrays, Strings & Hashing
Foundations. Almost every other topic builds on array manipulation and HashMap usage.
Day | Topic | Problems to Solve |
|---|---|---|
1 | Arrays: two pointers, prefix sums | Two Sum, Best Time to Buy/Sell Stock, Max Subarray |
2 | Sliding window (fixed size) | Max Sum Subarray of Size K, Average of Subarrays |
3 | Sliding window (variable size) | Longest Substring Without Repeating, Fruit Into Baskets |
4 | HashMap / HashSet | Contains Duplicate, Group Anagrams, Valid Anagram |
5 | Prefix sums + difference arrays | Range Sum Query, Subarray Sum Equals K |
6–7 | Review + new strings | Valid Palindrome, Longest Common Prefix, Roman to Integer |
8 | String matching: KMP / Z-algo | Implement strStr(), Repeated Substring Pattern |
9 | 2D arrays, matrix traversal | Spiral Matrix, Rotate Image, Set Matrix Zeroes |
10 | Sorting-based problems | 3Sum, Sort Colors, Merge Intervals |
11 | Binary search fundamentals | Binary Search, Search in Rotated Array, Find Peak |
12–14 | Week review + spaced repetition | Re-solve Day 1–5 problems from scratch |
Weeks 3–4: Linked Lists, Stacks & Queues
Day | Topic | Problems to Solve |
|---|---|---|
15 | Singly linked list: basics | Reverse Linked List, Middle of List, Merge Two Sorted |
16 | Linked list: fast & slow pointers | Linked List Cycle, Cycle Start, Kth Node From End |
17 | Doubly linked list + LRU Cache | LRU Cache (design from scratch) |
18 | Stack: basic applications | Valid Parentheses, Min Stack, Evaluate RPN |
19 | Monotonic stack | Daily Temperatures, Next Greater Element, Largest Rectangle |
20 | Queue and deque | Sliding Window Maximum, Design Circular Queue |
21–22 | Stack + queue design problems | Queue via Stacks, Stack via Queues, Min Stack |
23 | In-place list reversal | Reverse Nodes in K-Group, Reorder List, Palindrome List |
24–28 | Review weeks 1–4 | Pick 2 random problems per day from previous topics |
Weeks 5–6: Trees, Heaps & Trie
Day | Topic | Problems to Solve |
|---|---|---|
29 | Binary tree DFS | Max Depth, Invert Tree, Same Tree, Symmetric Tree |
30 | Tree paths and sums | Path Sum, Path Sum II, Sum Root to Leaf Numbers |
31 | Tree BFS (level order) | Level Order, Zigzag Level Order, Right Side View |
32 | BST properties | Validate BST, Kth Smallest in BST, BST Iterator |
33 | LCA and ancestors | LCA of BST, LCA of Binary Tree, All Nodes Distance K |
34 | Binary tree construction | Build Tree (pre+inorder), Serialize/Deserialize |
35 | Heap basics + top K | Kth Largest Element, K Most Frequent Elements, Top K |
36 | Heap: median stream, merge K | Find Median from Data Stream, Merge K Sorted Lists |
37 | Trie | Implement Trie, Word Search II, Replace Words |
38–42 | Review weeks 1–6 | One problem per prior topic daily |
Weeks 7–8: Graphs, Sorting & Searching
Day | Topic | Problems to Solve |
|---|---|---|
43 | Graph representations + BFS | Number of Islands, Rotting Oranges, 01 Matrix |
44 | DFS on graphs | Clone Graph, Path Exists, Surrounded Regions |
45 | Topological sort | Course Schedule I & II, Alien Dictionary |
46 | Union-Find | Number of Connected Components, Redundant Connection |
47 | Weighted graphs: Dijkstra | Network Delay Time, Path With Min Effort |
48 | Bellman-Ford + Floyd-Warshall | Cheapest Flights K Stops, Find City With Fewest |
49 | MST: Kruskal + Prim | Min Cost to Connect All Points, Optimize Water |
50 | Advanced graph: bipartite, SCC | Is Graph Bipartite, Critical Connections |
51 | Sorting algorithms (implement) | Code merge sort, quick sort, counting sort from scratch |
52–56 | Binary search advanced | Search in 2D Matrix II, Find K Closest, Koko Eating |
Weeks 9–10: Greedy, Backtracking & Divide and Conquer
Day | Topic | Problems to Solve |
|---|---|---|
57 | Greedy fundamentals | Jump Game, Jump Game II, Gas Station |
58 | Greedy: intervals | Non-overlapping Intervals, Meeting Rooms II |
59 | Backtracking: subsets | Subsets, Subsets II, Combination Sum |
60 | Backtracking: permutations | Permutations, Permutations II, Next Permutation |
61 | Backtracking: N-Queens, Sudoku | N-Queens, Sudoku Solver, Word Search |
62 | Backtracking pruning techniques | Palindrome Partitioning, Restore IP Addresses |
63 | Divide and conquer | Merge Sort (implement), Quick Sort pivot strategies |
64 | D&C on arrays | Median of Two Sorted Arrays, Kth Largest in Two Arrays |
65–70 | Review full backtracking set | Re-solve all backtracking problems without notes |
Weeks 11–12: Dynamic Programming + Review + Mock Interviews
Day | Topic | Problems to Solve |
|---|---|---|
71 | 1D DP | Climbing Stairs, House Robber, Decode Ways |
72 | 2D DP (grid) | Unique Paths, Min Path Sum, Dungeon Game |
73 | Sequence DP | Longest Increasing Subsequence, Russian Dolls |
74 | String DP | Edit Distance, Longest Common Subsequence, Interleaving |
75 | Knapsack variants | Partition Equal Subset, Target Sum, Coin Change |
76 | DP on trees | House Robber III, Diameter of Binary Tree |
77 | Interval DP | Burst Balloons, Matrix Chain, Strange Printer |
78 | Bitmask DP | Assign Work, Shortest Path Visiting All Nodes |
79–80 | Full mock interviews | 3 problems, 45 min each; simulate real conditions |
81–84 | Weak area focus | Double down on your 3 weakest topics |
Daily Routine
20 min: warm up with one Easy problem from a previous topic
40–60 min: new problem(s) for the current day's topic
15 min: review yesterday's solutions — could you make it cleaner?
10 min: update your pattern journal (what pattern did each problem use?)
Spaced Repetition System
Use a simple tagging system for every problem you solve:
Tag system: [1] — solved on first try with no help [2] — needed a hint or minor struggle [3] — had to look at the solution Review schedule: [1] problems → revisit in 7 days [2] problems → revisit in 3 days [3] problems → revisit next day If you tag [1] again on the revisit → move to 2-week cycle. If you tag [3] again → it goes back on the daily queue.
When to Move On
You can solve the problem clean without looking at previous solutions
You can explain the time and space complexity instantly
You can identify the pattern and explain why it applies
You can name at least 2 variant problems that use the same pattern
Recommended Resources
Resource | Best for | Free? |
|---|---|---|
LeetCode | Problem practice with test cases | Partial (free has most problems) |
NeetCode.io | Structured roadmap + video explanations | Free |
AlgoExpert | Video walkthroughs, structured progression | Paid |
CLRS (book) | Deep theoretical understanding | Paid |
Grokking the Coding Interview | Pattern-based learning | Paid |
Competitive Programmer's Handbook | Advanced topics, free PDF online | Free |
Back to Back SWE (YouTube) | Clear visual explanations of hard problems | Free |
Tech Interview Handbook | Behavioral + technical combined | Free (GitHub) |