Leetcode Patterns
Table of Contents
- Background
- Preface
- Notes
- Question List
- Solutions
- Leetcode Discuss
- Tips to Consider
- Suggestions
- Acknowledgements
Background
This repo is intended for any individual wanting to improve their problem solving skills for software engineering interviews.
Problems are grouped under their respective subtopic, in order to focus on repeatedly applying common patterns rather than randomly tackling questions.
All questions are available on leetcode.com with some requiring leetcode premium.
Preface
It is highly recommended to read chapters 1, 2, 3, 4, 8, and 10 of Cracking The Coding Interview to familiarize yourself with the following data structures and their operations:
- Arrays
- Maps
- Linked Lists
- Queues
- Heaps
- Stacks
- Trees
- Graphs
In addition, you should have a good grasp on common algorithms such as:
- Breadth-first search
- Depth-first search
- Binary search
- Recursion
Notes
This pdf contains useful information for the built-in data structures in Java.
Other useful methods to know include substring()
, toCharArray()
, Math.max()
,
Math.min()
, and Arrays.fill()
.
Question List
The entire question list can be found here: https://seanprashad.com/leetcode-patterns/.
In addition to viewing the question list, companies that have previously asked the question in the past 6 months (as of May 2021) will be listed. You can also use the checkboxes to mark which questions you've completed!
Solutions
Solutions written in Java can be found in the solutions branch.
Leetcode Discuss
Leetcode discuss is an amazing resource and features previous interview questions, as well as compensation and general career advice.
Tips to Consider
If input array is sorted then
- Binary search
- Two pointers
If asked for all permutations/subsets then
- Backtracking
If given a tree then
- DFS
- BFS
If given a graph then
- DFS
- BFS
If given a linked list then
- Two pointers
If recursion is banned then
- Stack
If must solve in-place then
- Swap corresponding values
- Store one or more different values in the same pointer
If asked for maximum/minimum subarray/subset/options then
- Dynamic programming
If asked for top/least K items then
- Heap
If asked for common strings then
- Map
- Trie
Else
- Map/Set for O(1) time & O(n) space
- Sort input for O(nlogn) time and O(1) space
Suggestions
Think a question should/shouldn't be included? Wish there was another feature? Feel free to open an issue with your suggestion!
Acknowledgements
This list is heavily inspired from Grokking the Coding Interview with additional problems extracted from the Blind 75 list and this hackernoon article on 14 patterns to ace any coding interview question.