Studying Algorithms
March 12, 2025 | Categories: programmingI have been spending some time refreshing up on Complex Data Structures and Algorithms. Luckily I spend a lot of time coding in C where often times you still use LinkedLists. However, I haven't done a lot of this since college in the early 2000's. Here is a rough list of order I recommend approaching these:
- Binary Search
- two-pointers
- sliding window
- Decision Trees and Recursion
- Binary Trees
- Backtracking Problems
- Combinatorics
- Dynamic Programming
- Graphs
- DFS - Depth First Searching
- BFS - Breadth First Searching
- Graphs with edge cases, infinite loops, cycle detection, shortest path
- HashMaps
- Counting Frequencies
- Quick lookups (O(1) time complexity)
- Graph Adjacency lists
- Heaps
- Min-Heaps
- Max-Heaps
- K elements efficiently
- Dynamic Programming
- Longest Common Subsequence
- Coin Change
- Classic DP patterns. (Knapsack, LIS, partitioning)
Probably the best study resource I have found for a good refresher is Structy. Alvin is an amazing teacher and the way he splits up the explanations with the solutions makes it easier to first challenge yourself.
I am not against Interview questions regarding Complex Data structures and Algorithms as long as they try and avoid the silly brain teasers. I still highly suggest practicing on some Leet code throughout your career as a way to feed your programming problem solving mind and to build up confidence.