Study Plan
Last updated
Last updated
These questions were compiled from the Tech Interview Handbook across its various topics. The order of studying and study plan is also inspired by the Tech Interview Handbook.
It took me about a month to complete the study plan (not including the dynamic programming roadmap). It's important to preface that I had completed a data structures & algorithms (DSA) course right before starting my revision so a lot of the fundamentals was fresh in my head. You may find yourself spending more/less time than I did and that is alright.
Check out my dedicated blog post for the key aspects of preparing for technical interviews: https://blog.woojiahao.com/post/technical-interview-systems/
If you are not familiar with fundamental DSA, it is recommended that you read a book on DSA before diving into LeetCode as it will help you better understand how to apply the data structures/algorithms to the problems. You can find my recommendations in the FAQs.
Feel free to refer to the associated sections about each topic (in the left sidebar) to learn the techniques and patterns commonly associated to questions in that topic.
While it is good if you are "discover" these patterns yourself, having them formally introduced can help you to structure your thinking going into each problem.
: requires LeetCode premium
: problems that I found incredibly tricky and often tapped out
My recommended approach for duplicate questions is to try the question again but using the associated topic to solve it, rather than glossing over them again.
Once you have completed the study plan, feel free to use other question banks like Grind75 and Neetcode to continue improving your familiarity and speed.
You will notice that many of the questions from this study plan overlaps with these question banks. I recommend leaving them to the end and redoing them when you've completed the other questions.
You may also want to try improving your dynamic programming skills with the dynamic programming roadmap below.
These questions were collated from this Reddit post
I have written up a problems guide for this roadmap as I personally think that developing the intuition for dynamic programming is not easy and I would like to help bridge the gap. The problems guide can be found here.
Sliding Window Maximum
Find All Anagrams in a String
Group Anagrams
Longest Palindromic Substring
Encode and Decode Strings
Insert Delete GetRandom O(1)
First Missing Positive
LRU Cache
All O`one Data Structure
Generate Parentheses
Sudoku Solver
Strobogrammatic Number 2
Kth Smallest Element in a Sorted Matrix
Median of Two Sorted Arrays
Spiral Matrix
Valid Sudoku
Design Hit Counter
Basic Calculator
Basic Calculator 2
Trapping Rain Water
Largest Rectangle in Histogram
Binary Tree Maximum Path Sum
Subset of Another Tree
Construct Binary Tree from Preorder and Inorder Traversal
Serialize and Deserialize Binary Tree
Validate Binary Search Tree
Minimum Knight Moves
Pacific Atlantic Water Flow
Number of Connected Components in an Undirected Graph
Graph Valid Tree
Alien Dictionary
Find Median from Data Stream
Word Break
Word Search 2
Meeting Rooms
Meeting Rooms 2
Minimum Time to Make Rope Colorful
Minimum Cost for Tickets
Unique Paths 2
Count Square Submatrices with All Ones
Dungeon Game
These problems often require , where solves for and
Strong Game 7
These problems are often solved on every prefix of the array, transition from every
House Robbers 3
String Compression 2
Minimum Difficulty of a Job Schedule