CodeForWar

Blab on Technology

Studying Algorithms

March 12, 2025 | Categories: programming

I 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:

  1. Binary Search
    • two-pointers
    • sliding window
  2. Decision Trees and Recursion
    • Binary Trees
    • Backtracking Problems
    • Combinatorics
    • Dynamic Programming
  3. Graphs
    • DFS - Depth First Searching
    • BFS - Breadth First Searching
  4. Graphs with edge cases, infinite loops, cycle detection, shortest path
  5. HashMaps
    • Counting Frequencies
    • Quick lookups (O(1) time complexity)
    • Graph Adjacency lists
  6. Heaps
    • Min-Heaps
    • Max-Heaps
    • K elements efficiently
  7. 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.