Study Plan

circle-info

These questions were compiled from the Tech Interview Handbookarrow-up-right across its various topics. The order of studying and study plan is also inspired by the Tech Interview Handbookarrow-up-right.

Preface

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.

circle-info

Check out my dedicated blog post for the key aspects of preparing for technical interviews: https://blog.woojiahao.com/post/technical-interview-systems/arrow-up-right

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.

How to use?

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.

Notation

  • ⭐ : requires LeetCode premium

  • 🚩 : problems that I found incredibly tricky and often tapped out

Duplicate questions

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.

Week 1

chevron-rightArrayhashtag
chevron-rightStringhashtag
chevron-rightHash Tablehashtag
chevron-rightRecursionhashtag

Week 2

chevron-rightSorting and Searchinghashtag
chevron-rightMatrixhashtag
chevron-rightLinked Listhashtag
chevron-rightQueuehashtag
chevron-rightStackhashtag

Week 3

chevron-rightTreehashtag
chevron-rightGraphhashtag
chevron-rightHeaphashtag
chevron-rightTriehashtag

Week 4

chevron-rightIntervalhashtag
chevron-rightDynamic Programminghashtag

For more questions on Dynamic Programming, refer to the Dynamic programming roadmap after you are done with this initial study plan

chevron-rightBinaryhashtag
chevron-rightMathhashtag
chevron-rightGeometryhashtag

Week 5 onwards

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.

Dynamic programming roadmap

circle-info

These questions were collated from this Reddit postarrow-up-right

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.

chevron-rightWarmuphashtag
chevron-rightLinear Sequenceshashtag

These are problems that require solving sub-problems based on the prefix of the array with a constant transition

chevron-rightGridshashtag

These are problems where the dynamic programming array is the same dimensions as the grid

chevron-rightTwo Sequenceshashtag

These problems often require O(MN)O(MN), where dp[i][j]dp[i][j] solves for arr1[:i]arr1[:i] and arr2[:j]arr2[:j]

chevron-rightIntervalshashtag

These problems often require solving for every interval of the array

chevron-rightLinear Sequence Transitionshashtag

These problems are often solved on every prefix of the array, transition from every j<ij < i

chevron-rightKnapsack-likehashtag
chevron-rightTopological Sort/Graphshashtag

These problems often require solving on all sub-graphs connected to each node

chevron-rightTreeshashtag

These problems often require solving on all subtrees

chevron-rightInteresting Problemshashtag

Other interesting problems that I have done so far

Last updated