This is my public roadmap to go from shaky foundations to:
- Solving most Leetcode Hards, all Mediums and Easys independently
- Reaching 1600–1800 rating on Codeforces
- Crushing every DSA round in placements — no blanking, no hesitation
3 months. No excuses. I'm posting this publicly to stay accountable. Every checkbox gets a date when it's done.
Resources I'm Using
These are the only resources I need. Seniors and people who've done this before all point to the same things — so I'm trusting the process.
- NeetCode YT + NeetCode 250 Sheet — primary problem list. If stuck on any problem, watch his video. He explains the intuition, not just the code. Use the sheet but submit on LeetCode so the count goes up.
- Codestory with Mik YT — watch for problem-solving mindset and contest strategy. His thinking-out-loud style builds intuition fast.
- LuvDSA YT — additional problem walkthroughs for practice reinforcement.
- LeetCode Top 150 — milestone target. If I can do all of these, I'm placement-ready.
- cp-algorithms.com — for deep dives on graph and DP algorithms.
- Codeforces problem filter — daily grind for CP rating.
Daily Schedule
Weekdays — 2.5 hours
- 1 hour morning: 1–2 LeetCode problems (topic I'm currently on). Minimum 30 min struggle before any hint.
- 1 hour evening: theory if new topic, OR 1 more problem.
- 30 min: review solution, understand alternate approaches, note patterns.
Weekends — 4 hours
- 2 hours: 2–3 problems, slightly harder than weekday target.
- 1 hour: CF contest (live or virtual) on Saturday.
- 1 hour: upsolve everything missed in the contest. Non-negotiable.
Daily problem target: 3–4 problems. On slow days (GSoC heavy), minimum is 2. Zero is never acceptable.
Phase 1 — Foundation Repair
Target: Weeks 1–3
C++ STL Mastery
-
vector,pair,string— basics and common operations — 24-02-2026 -
map,unordered_map— when to use which, complexity difference — 24-02-2026 -
set,multiset,unordered_set— 24-02-2026 -
stack,queue,deque— 24-02-2026 -
priority_queue— min-heap and max-heap — 24-02-2026 -
sortwith custom comparators — 25-02-2026 -
lower_bound,upper_bound,binary_search— 25-02-2026 -
next_permutation,accumulate,count,find— 25-02-2026 - Practice: 10 problems using only STL on Codeforces (800–1000 rating) — 26-02-2026
Complexity Analysis
- Big-O notation — O(1), O(log n), O(n), O(n log n), O(n²) — 26-02-2026
- Can look at any loop structure and instantly state its complexity — 26-02-2026
- Understand when a solution will TLE based on constraints (n ≤ 10^5 → O(n log n) max, etc.) — 26-02-2026
Arrays & Strings
- Two pointers technique — opposite ends and same direction — 26-02-2026
- Sliding window — fixed size and variable size — 26-02-2026
- Prefix sums — 1D and 2D — 26-02-2026
- Practice: 15 problems on Leetcode (mix of Easy/Medium)
- 1. Two Sum — 01-03-2026
- 121. Best Time to Buy and Sell Stock — 01-03-2026
- 217. Contains Duplicate — 01-03-2026
- 53. Maximum Subarray — 02-03-2026
- 283. Move Zeroes — 02-03-2026
- 15. 3Sum — 02-03-2026
- 11. Container With Most Water — 02-03-2026
- 3. Longest Substring Without Repeating Characters — 03-03-2026
- 560. Subarray Sum Equals K — 03-03-2026
- 209. Minimum Size Subarray Sum — 03-03-2026
- 1456. Maximum Number of Vowels in a Substring of Given Length — 03-03-2026
- 238. Product of Array Except Self - 11-05-2026
- 438. Find All Anagrams in a String - 11-05-2026
- 128. Longest Consecutive Sequence - 11-05-2026
- 75. Sort Colors - 11-05-2026
Recursion & Backtracking
- Understand the call stack — trace recursive calls by hand on paper first
- Base case thinking — every recursion problem starts here, always
- Classic problems: Fibonacci, factorial, power(x,n), reverse array recursively
- Subsets — draw the decision tree before coding
- Permutations and combinations
- Backtracking: N-Queens, Sudoku solver, rat in a maze
- Watch: Striver's recursion series on YT (full playlist, in order)
- Watch: Codestory with Mik — recursion + backtracking episodes
- Practice: 20 pure recursion + backtracking problems before moving on
- 206. Reverse Linked List
- 344. Reverse String
- 509. Fibonacci Number
- 70. Climbing Stairs
- 50. Pow(x, n)
- 78. Subsets
- 90. Subsets II
- 46. Permutations
- 47. Permutations II
- 39. Combination Sum
- 40. Combination Sum II
- 77. Combinations
- 22. Generate Parentheses
- 17. Letter Combinations of a Phone Number
- 131. Palindrome Partitioning
- 93. Restore IP Addresses
- 79. Word Search
- 51. N-Queens
- 52. N-Queens II
- 37. Sudoku Solver
Linked Lists
- Singly linked list — insert, delete, reverse (draw pointer changes before coding)
- Fast and slow pointers — Floyd's cycle detection
- Merge two sorted lists
- Find middle, detect loop, remove nth from end
- Watch: NeetCode linked list section
- Practice: 10 problems on Leetcode
Phase 2 — Core DSA
Target: Weeks 4–10
Stacks & Queues
- Stack using array and STL
- Monotonic stack — next greater element, previous smaller element (most important pattern for placements)
- Queue, circular queue, deque
- Classic problems: valid parentheses, largest rectangle in histogram, sliding window maximum
- Watch: NeetCode stack section + Mik's monotonic stack video
- Practice: 12 problems
- 20. Valid Parentheses
- 155. Min Stack
- 232. Implement Queue using Stacks
- 225. Implement Stack using Queues
- 496. Next Greater Element I
- 739. Daily Temperatures
- 150. Evaluate Reverse Polish Notation
- 394. Decode String
- 901. Online Stock Span
- 84. Largest Rectangle in Histogram
- 239. Sliding Window Maximum
- 42. Trapping Rain Water
Binary Search
- Binary search on sorted array — the basics cold
- Binary search on answer — the real skill. "minimize the maximum" = binary search on answer
- Lower bound / upper bound applications
- Classic problems: search in rotated array, find peak element, Koko eating bananas, aggressive cows
- Watch: NeetCode binary search section
- Practice: 15 problems
- 704. Binary Search
- 278. First Bad Version
- 35. Search Insert Position
- 374. Guess Number Higher or Lower
- 69. Sqrt(x)
- 167. Two Sum II - Input Array Is Sorted
- 33. Search in Rotated Sorted Array
- 153. Find Minimum in Rotated Sorted Array
- 162. Find Peak Element
- 74. Search a 2D Matrix
- 875. Koko Eating Bananas
- 1011. Capacity To Ship Packages Within D Days
- 34. Find First and Last Position of Element in Sorted Array
- 981. Time Based Key-Value Store
- 4. Median of Two Sorted Arrays
Heaps (Priority Queue)
- Min-heap and max-heap internals — understand how heapify works
- K largest / K smallest elements
- Merge K sorted lists
- Top K frequent elements
- Practice: 10 problems
Trees
- Binary tree traversals — inorder, preorder, postorder (recursive AND iterative both)
- Level order traversal — BFS on trees
- Height, diameter, depth
- Lowest common ancestor (LCA)
- Binary Search Tree — insert, delete, search, validate
- Path sum problems
- Serialize and deserialize
- Watch: NeetCode trees section (all 15 problems) + Mik's tree series
- Practice: 30 problems — non-negotiable before touching graphs
- 144. Binary Tree Preorder Traversal
- 94. Binary Tree Inorder Traversal
- 145. Binary Tree Postorder Traversal
- 104. Maximum Depth of Binary Tree
- 226. Invert Binary Tree
- 572. Subtree of Another Tree
- 100. Same Tree
- 101. Symmetric Tree
- 112. Path Sum
- 102. Binary Tree Level Order Traversal
- 107. Binary Tree Level Order Traversal II
- 637. Average of Levels in Binary Tree
- 543. Diameter of Binary Tree
- 110. Balanced Binary Tree
- 700. Search in a Binary Search Tree
- 701. Insert into a Binary Search Tree
- 530. Minimum Absolute Difference in BST
- 235. Lowest Common Ancestor of a Binary Search Tree
- 199. Binary Tree Right Side View
- 1448. Count Good Nodes in Binary Tree
- 230. Kth Smallest Element in a BST
- 98. Validate Binary Search Tree
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- 106. Construct Binary Tree from Inorder and Postorder Traversal
- 236. Lowest Common Ancestor of a Binary Tree
- 113. Path Sum II
- 124. Binary Tree Maximum Path Sum
- 297. Serialize and Deserialize Binary Tree
- 450. Delete Node in a BST
- 99. Recover Binary Search Tree
Graphs
- Graph representation — adjacency list vs matrix, know when to use which
- BFS — shortest path in unweighted graph
- DFS — connected components, cycle detection
- Topological sort — Kahn's algorithm + DFS approach (both)
- Union-Find (DSU) — with path compression and union by rank
- Dijkstra's algorithm — shortest path in weighted graph
- Bellman-Ford — for negative weights
- Minimum spanning tree — Kruskal's and Prim's
- Watch: NeetCode graphs + advanced graphs sections
- Reference: cp-algorithms.com for DSU and Dijkstra deep dives
- Practice: 25 problems — topic by topic, one algorithm at a time
- 997. Find the Town Judge
- 1791. Find Center of Star Graph
- 200. Number of Islands
- 733. Flood Fill
- 695. Max Area of Island
- 542. 01 Matrix
- 994. Rotting Oranges
- 133. Clone Graph
- 207. Course Schedule
- 210. Course Schedule II
- 684. Redundant Connection
- 323. Number of Connected Components in an Undirected Graph
- 261. Graph Valid Tree
- 127. Word Ladder
- 417. Pacific Atlantic Water Flow
- 130. Surrounded Regions
- 286. Walls and Gates
- 743. Network Delay Time
- 787. Cheapest Flights Within K Stops
- 1631. Path With Minimum Effort
- 332. Reconstruct Itinerary
- 1584. Min Cost to Connect All Points
- 778. Swim in Rising Water
- 269. Alien Dictionary
- 765. Couples Holding Hands
Dynamic Programming
- 1D DP — climbing stairs, house robber, jump game
- 2D DP — grid paths, unique paths, minimum path sum
- Knapsack — 0/1 knapsack, unbounded knapsack
- String DP — LCS, edit distance, longest palindromic subsequence
- DP on trees
- Bitmask DP (intro level)
- Watch: NeetCode 1D DP + 2D DP sections + Mik's DP series
- Practice: 30 problems — never memorize, always derive the recurrence from scratch
- 70. Climbing Stairs
- 746. Min Cost Climbing Stairs
- 198. House Robber
- 213. House Robber II
- 322. Coin Change
- 518. Coin Change II
- 55. Jump Game
- 45. Jump Game II
- 152. Maximum Product Subarray
- 139. Word Break
- 62. Unique Paths
- 63. Unique Paths II
- 64. Minimum Path Sum
- 120. Triangle
- 416. Partition Equal Subset Sum
- 494. Target Sum
- 1143. Longest Common Subsequence
- 72. Edit Distance
- 1092. Shortest Common Supersequence
- 516. Longest Palindromic Subsequence
- 647. Palindromic Substrings
- 5. Longest Palindromic Substring
- 300. Longest Increasing Subsequence
- 309. Best Time to Buy and Sell Stock with Cooldown
- 714. Best Time to Buy and Sell Stock with Transaction Fee
- 10. Regular Expression Matching
- 115. Distinct Subsequences
- 312. Burst Balloons
- 329. Longest Increasing Path in a Matrix
- 337. House Robber III
Phase 3 — NeetCode 250 Grind
Target: Weeks 7–12 (overlaps with Phase 2)
Start this alongside Phase 2 theory from Week 7. Use the NeetCode 250 sheet. Submit on LeetCode. Watch NeetCode's video only after 30+ min of genuine struggle.
- Arrays & Hashing
- Two Pointers
- Sliding Window
- Stack
- Binary Search
- Linked List
- Trees
- Tries
- Heap / Priority Queue
- Backtracking
- Graphs
- Advanced Graphs
- 1D DP
- 2D DP
- Greedy
- Intervals
- Math & Geometry
- Bit Manipulation
LeetCode Top 150 — Placement Milestone
- Complete LeetCode Top 150 by end of Month 3 — this is the placement-ready checkpoint
Milestones
- End of Month 1: Can solve 80% of Leetcode Easys in under 15 minutes independently
- End of Month 2: Can solve 70% of Leetcode Mediums in under 35 minutes independently
- End of Month 3: Attempted at least 15 Leetcode Hards independently (no hints for first 45 min)
- Can explain every data structure and algorithm out loud without notes
Phase 4 — Codeforces Rating Grind
Target: Week 4 onwards, ongoing in parallel
Current rating: 1072 (max 1077). Target: 1600–1800.
Rating Ladder (Codeforces problem filter grind)
- Solve 20 problems rated 1100
- Solve 20 problems rated 1200
- Solve 20 problems rated 1300
- Solve 15 problems rated 1400
- Solve 15 problems rated 1500
- Solve 15 problems rated 1600
Live Contests
- Participate in first Div. 4 contest (live)
- Participate in 5 Div. 4 contests total
- Participate in first Div. 3 contest (live)
- Participate in 5 Div. 3 contests total
- Upsolve every problem missed in every contest — non-negotiable, every single time
Rating Milestones
- Reach rating 1200 (Pupil)
- Reach rating 1400
- Reach rating 1600 (Specialist) 🎯
- Reach rating 1800 (Expert boundary) 🎯
Rules — Non-Negotiable
- 30–45 minutes of genuine struggle before looking at any hint. Pain builds intuition. There's no shortcut here.
- No copy-pasting solutions. If I can't solve it, I upsolve it properly — read the editorial, understand it fully, then code from scratch without looking.
- Every new topic: theory first, then minimum 10 problems on that topic before moving on.
- After every CF contest: upsolve every problem I couldn't solve during the contest. Read the editorial. Code it. No exceptions.
- NeetCode 250 is the primary sheet. If stuck on any problem, watch NeetCode's video for that problem. Submit on LeetCode so the count goes up.
- Zero days are not allowed. GSoC heavy day = minimum 2 problems. No day is a zero.
- Update this post with dates every time a checkbox gets ticked. Public accountability is the point.
Written by Yash (xevrion)