Summary, 4 weeks in.
#devstudy #algorithmns #datastructures #problemsolving
Read Before Starting
STOP SKIPPING STEPS EVEN ON EASY QUESTIONS!!!!!!!!!! YOU WILL REGRET IT EVERYTIME!!!!!!!!!!!!!
Most Common Mistakes
EFFY PLEASE VISUALIZE/WRITE MORE TEST CASES – misinterpreting the problem bc going too fast – misunderstanding the problem bc going too fast – implementation issues with scoping
If Stuck
- Can you reverse the interpretation?
- Can you start the approach with the another input and/or direction?
- Can you use a set or a map to store something you're manually reaching for at a later point?
- Can you break down the problem more?
- Did you make a table of cases to fully visualize the pattern or did you trust your assumptions? Don't trust your assumptions.
Interpretation Patterns
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 – Tree
Else – Map/Set for O(1) time & O(n) space – Sort input for O(nlogn) time and O(1) space