1 hour/day · 6 days/week · ~21 weeks to NeetCode 150 completion · no sugarcoating
Attempt each cold. No reviewing DP first. The results tell you where you actually stand.
| Mon | 0/1 Knapsack | GFG: 0/1 Knapsackmedium — if this takes >50 min, your DP base is weak |
| Tue | Coin Change | LC #322 Coin Changemedium |
| Wed | LCS | LC #1143 Longest Common Subsequencemedium |
| Thu | Edit Distance | LC #72 Edit Distancehard |
| Fri | LIS | LC #300 Longest Increasing Subsequencemedium |
| Sat | Partition Sum | LC #416 Partition Equal Subset Summedium |
| Sun | review | Re-solve whichever of the above took you longest. Write the pattern in plain English in your file. |
| Mon | concept + easy | LC #20 Valid Parentheseseasy — 20 min concept: stack operations in JS (push, pop, peek). Then code. |
| Tue | medium | LC #155 Min Stackmedium — design problem, O(1) getMin |
| Wed | medium | LC #150 Evaluate Reverse Polish Notationmedium |
| Thu | medium | LC #394 Decode Stringmedium — nested stack usage |
| Fri | medium | LC #735 Asteroid Collisionmedium — simulation with stack |
| Sat | hard attempt | LC #224 Basic Calculatorhard — stack + recursion. Full hour. |
| Sun | review | Re-do Valid Parentheses and Decode String from memory. Write the stack template in your own words. |
| Mon | concept + 2 easy | LC #206 Reverse Linked Listeasy + LC #21 Merge Two Sorted Listseasy — 20 min concept, then code both |
| Tue | medium | LC #143 Reorder Listmedium — uses reverse + merge + find middle |
| Wed | medium | LC #19 Remove Nth Node From Endmedium — two pointer gap technique |
| Thu | medium | LC #138 Copy List with Random Pointermedium — hash map + linked list |
| Fri | medium | LC #2 Add Two Numbersmedium — carry logic + list building |
| Sat | hard attempt | LC #23 Merge K Sorted Listshard — divide and conquer or heap approach |
| Sun | review | Re-do Reverse Linked List and Reorder List from memory. These two patterns cover 80% of linked list problems. |
| Mon | concept + easy | LC #125 Valid Palindromeeasy — 20 min concept, 40 min code |
| Tue | medium | LC #167 Two Sum IImedium |
| Wed | medium | LC #11 Container With Most Watermedium |
| Thu | medium | LC #15 3Summedium — sort first, then two pointer |
| Fri | fast/slow | LC #141 Linked List Cycleeasy + LC #287 Find Duplicatemedium |
| Sat | hard attempt | LC #42 Trapping Rain Waterhard — attempt it, you may not finish, that's fine |
| Sun | review | Re-solve 3Sum and Trapping Rain Water from memory only. |
| Mon | concept + easy | LC #643 Max Average Subarray Ieasy — fixed window, 20 min concept |
| Tue | medium | LC #3 Longest Substring Without Repeatingmedium |
| Wed | medium | LC #424 Longest Repeating Char Replacementmedium |
| Thu | medium | LC #567 Permutation in Stringmedium |
| Fri | medium | LC #904 Fruit Into Basketsmedium |
| Sat | hard attempt | LC #76 Minimum Window Substringhard |
| Sun | review | Re-solve LC #3 and LC #424 from scratch. These two patterns cover 80% of sliding window problems. |
| Mon | concept + easy | LC #242 Valid Anagrameasy — concept: Map vs obj, O(1) lookup, collision theory (20 min) |
| Tue | medium | LC #49 Group Anagramsmedium |
| Wed | medium | LC #347 Top K Frequent Elementsmedium — bucket sort approach |
| Thu | medium | LC #271 Encode and Decode Stringsmedium |
| Fri | medium | LC #128 Longest Consecutive Sequencemedium — O(n) using Set |
| Sat | combo | LC #560 Subarray Sum Equals Kmedium — hashing + prefix sum |
| Sun | review | Re-do LC #128 and LC #560. These use hashing non-obviously — critical pattern. |
| Mon | concept + 2 easy | LC #226 Invert Binary Treeeasy + LC #104 Maximum Deptheasy — 20 min concept: DFS vs BFS, recursive tree traversal |
| Tue | 2 easy | LC #543 Diameter of Binary Treeeasy + LC #110 Balanced Binary Treeeasy |
| Wed | 2 easy | LC #100 Same Treeeasy + LC #572 Subtree of Another Treeeasy |
| Thu | medium (BFS) | LC #102 Binary Tree Level Order Traversalmedium — queue-based BFS template |
| Fri | medium | LC #199 Binary Tree Right Side Viewmedium — BFS variation |
| Sat | medium | LC #1448 Count Good Nodes in Binary Treemedium — DFS with state passing |
| Sun | review | Re-do Invert Binary Tree, Level Order Traversal, and Right Side View from memory. Write both DFS and BFS templates in your file. |
| Mon | medium | LC #98 Validate Binary Search Treemedium — pass min/max bounds down |
| Tue | medium | LC #230 Kth Smallest Element in BSTmedium — inorder traversal |
| Wed | medium | LC #235 Lowest Common Ancestor of BSTmedium |
| Thu | medium | LC #105 Construct Tree from Preorder + Inordermedium |
| Fri | hard attempt | LC #124 Binary Tree Maximum Path Sumhard — global max + DFS return value |
| Sat | hard attempt | LC #297 Serialize and Deserialize Binary Treehard |
| Sun | review | Re-do Validate BST and Construct Tree from Preorder + Inorder from memory. These two test if you truly understand tree structure. |
| W9 Mon | concept | Study the template: choose → recurse → unchoose. 20 min concept, then implement subsets by hand in JS. |
| W9 Tue | medium | LC #78 Subsetsmedium |
| W9 Wed | medium | LC #46 Permutationsmedium |
| W9 Thu | medium | LC #39 Combination Summedium |
| W9 Fri | medium | LC #40 Combination Sum IImedium — pruning duplicates |
| W9 Sat | medium | LC #90 Subsets IImedium |
| W9 Sun | review | Re-do Permutations and Combination Sum from memory. |
| W10 Mon | medium | LC #79 Word Searchmedium |
| W10 Tue | medium | LC #131 Palindrome Partitioningmedium |
| W10 Wed | medium | LC #17 Letter Combinationsmedium |
| W10 Thu | hard attempt | LC #51 N-Queenshard — benchmark problem. Full hour. No shortcuts. |
| W10 Fri | hard attempt | LC #37 Sudoku Solverhard |
| W10 Sat | medium | LC #22 Generate Parenthesesmedium — deceptively instructive |
| W10 Sun | review | Re-do Word Search and N-Queens. If N-Queens still breaks you, spend extra time. Don’t skip it. |
| Mon | build it | Implement MinHeap + MaxHeap in JS from scratch. No LeetCode today. Full hour on the structure. |
| Tue | medium | LC #215 Kth Largest Elementmedium — use your MinHeap |
| Wed | medium | LC #973 K Closest Points to Originmedium |
| Thu | medium | LC #621 Task Schedulermedium |
| Fri | medium | LC #355 Design Twittermedium — heap + OOP |
| Sat | hard attempt | LC #295 Find Median from Data Streamhard — two heaps pattern |
| Sun | review | Re-write MinHeap from memory. Then re-do LC #295. Two-heap pattern is critical. |
| Mon | concept + warmup | LC #33 Search in Rotated Arraymedium — 20 min: read "binary search on answer space", then code |
| Tue | medium | LC #153 Find Min in Rotated Arraymedium |
| Wed | medium | LC #875 Koko Eating Bananasmedium — answer space BS begins here |
| Thu | medium | LC #1011 Capacity to Ship Packagesmedium |
| Fri | medium | LC #981 Time Based Key-Value Storemedium |
| Sat | hard attempt | LC #4 Median of Two Sorted Arrayshard — hardest binary search. Full attempt. |
| Sun | review | Re-do Koko and Capacity to Ship. Nail the feasibility function template cold. |
| Mon | concept + medium | LC #200 Number of Islandsmedium — 20 min concept: adjacency list, BFS/DFS templates. Then code. |
| Tue | medium | LC #133 Clone Graphmedium — DFS + hash map for visited |
| Wed | medium | LC #695 Max Area of Islandmedium |
| Thu | medium | LC #417 Pacific Atlantic Water Flowmedium — reverse BFS from edges |
| Fri | medium | LC #994 Rotting Orangesmedium — multi-source BFS |
| Sat | medium | LC #130 Surrounded Regionsmedium — boundary DFS |
| Sun | review | Re-do Number of Islands and Pacific Atlantic from memory. Write your BFS and DFS graph templates. |
| Mon | concept + topo | LC #207 Course Schedulemedium — 20 min topo sort concept (Kahn's BFS-based) |
| Tue | topo medium | LC #210 Course Schedule IImedium — return the actual order |
| Wed | topo medium | LC #802 Find Eventual Safe Statesmedium |
| Thu | Dijkstra concept | LC #743 Network Delay Timemedium — 20 min Dijkstra theory, then code using your MinHeap |
| Fri | Dijkstra medium | LC #1631 Path With Minimum Effortmedium |
| Sat | Dijkstra medium | LC #787 Cheapest Flights Within K Stopsmedium |
| Sun | review | Re-do Course Schedule II and Network Delay Time. These are the template problems for each algorithm. |
| Mon | build + medium | Implement DSU (30 min), then LC #547 Number of Provincesmedium |
| Tue | medium | LC #684 Redundant Connectionmedium — cycle detection |
| Wed | medium | LC #261 Graph Valid Treemedium |
| Thu | medium | LC #323 Connected Componentsmedium |
| Fri | medium | LC #721 Accounts Mergemedium — DSU + hashing combined |
| Sat | hard attempt | LC #778 Swim in Rising Waterhard |
| Sun | review | Re-write DSU from memory. Then re-do Accounts Merge. |
| Mon | concept + easy | LC #496 Next Greater Element Ieasy — 20 min concept: monotonic stack = stack maintaining an order invariant |
| Tue | medium | LC #739 Daily Temperaturesmedium |
| Wed | medium | LC #853 Car Fleetmedium |
| Thu | medium | LC #901 Online Stock Spanmedium |
| Fri | hard attempt | LC #84 Largest Rectangle in Histogramhard — benchmark. Full hour. |
| Sat | hard attempt | LC #85 Maximal Rectanglehard — builds on LC #84 |
| Sun | review | Re-do Daily Temperatures and Largest Rectangle in Histogram from memory. |
| Mon | build it | LC #208 Implement Triemedium — full hour implementing. Foundation for everything this week. |
| Tue | medium | LC #211 Design Add and Search Wordsmedium |
| Wed | medium | LC #1268 Search Suggestions Systemmedium |
| Thu | hard attempt | LC #212 Word Search IIhard — Trie + backtracking combined |
| Fri | medium | LC #648 Replace Wordsmedium |
| Sat | medium | LC #720 Longest Word in Dictionarymedium |
| Sun | review | Re-write Trie class from scratch. Attempt Word Search II again if Thursday was incomplete. |
| Mon | concept + medium | LC #53 Maximum Subarraymedium — Kadane's algorithm. 20 min concept: greedy vs DP distinction. |
| Tue | medium | LC #55 Jump Gamemedium |
| Wed | medium | LC #45 Jump Game IImedium |
| Thu | medium | LC #134 Gas Stationmedium — circular greedy |
| Fri | medium | LC #763 Partition Labelsmedium |
| Sat | 2 medium | LC #846 Hand of Straightsmedium + LC #678 Valid Parenthesis Stringmedium |
| Sun | review | Re-do Jump Game II and Gas Station from memory. Write why greedy works for each. |
| Mon | concept + medium | LC #56 Merge Intervalsmedium — 20 min concept: interval representation, sort strategy. Then code. |
| Tue | medium | LC #57 Insert Intervalmedium |
| Wed | medium | LC #435 Non-overlapping Intervalsmedium — greedy + intervals combined |
| Thu | easy | LC #252 Meeting Roomseasy — sort + check overlap (premium — use LintCode #920 if needed) |
| Fri | medium | LC #253 Meeting Rooms IImedium — min heap approach (premium — use LintCode #919 if needed) |
| Sat | hard attempt | LC #1851 Minimum Interval to Include Each Queryhard |
| Sun | review | Re-do Merge Intervals and Non-overlapping Intervals from memory. Write the interval template. |
| Mon | concept + 2 easy | LC #136 Single Numbereasy + LC #191 Number of 1 Bitseasy |
| Tue | 2 easy | LC #338 Counting Bitseasy + LC #190 Reverse Bitseasy |
| Wed | easy + medium | LC #268 Missing Numbereasy + LC #371 Sum of Two Integersmedium |
| Thu | medium | LC #137 Single Number IImedium |
| Fri | medium | LC #78 Subsetsmedium — re-solve using bitmask (you did backtracking in W9) |
| Sat | medium | LC #421 Maximum XOR of Two Numbersmedium — Trie + bit |
| Sun | review | Write every bit trick from memory. Re-do Sum of Two Integers without looking anything up. |
| W21 Mon | 1D DP | LC #70 Climbing Stairseasy + LC #198 House Robbermedium |
| W21 Tue | 1D DP | LC #213 House Robber IImedium + LC #91 Decode Waysmedium |
| W21 Wed | knapsack | LC #518 Coin Change IImedium — unbounded knapsack |
| W21 Thu | 2D DP | LC #62 Unique Pathsmedium + LC #63 Unique Paths IImedium |
| W21 Fri | 2D DP | LC #494 Target Summedium |
| W21 Sat | string DP | LC #97 Interleaving Stringhard |
| W21 Sun | review | Re-do House Robber II and Coin Change II from memory. |
| W22 Mon | hard | LC #312 Burst Balloonshard — interval DP |
| W22 Tue | hard | LC #10 Regular Expression Matchinghard |
| W22 Wed–Sun | NeetCode DP | Start NeetCode 150 DP section. Continue until complete, then proceed with full NeetCode 150 from the top. |