rgoussu@goussu: ~/library/algorithms
~/library/algorithms cat algorithms-and-data-structures.md

Algorithms & data structures

# The core toolkit and how to practice it — complexity, the essential structures, the algorithm families, and interview-grade patterns.

Conceptsaved 2026-08-08updated 2026-08-09 #algorithms#data-structures#complexity#interview-prep

Overview

The foundation everything else compiles down to: knowing which data structure fits which access pattern, estimating cost with big-O before writing code, and recognizing the standard algorithm families when a problem is secretly one of them. Doubly useful right now — it's also the deliberate-practice track for coding interviews, where fluency in the patterns matters more than memorizing solutions.

Key points

  • Complexity as a habit: big-O for time and space, amortized analysis (why dynamic array append is O(1)), and the practical caveat — constants and cache behavior decide real performance between same-O options.
  • Core structures & their access patterns: arrays vs. linked lists, hash maps (and their failure mode: worst-case collisions), heaps/priority queues, stacks & queues, trees (BST, balanced — the idea of red-black/AVL more than the rotations), tries, union-find, graphs (adjacency list vs. matrix).
  • Algorithm families: sorting (know quicksort/mergesort/heapsort trade-offs; know when counting/radix beats comparison), binary search (and "binary search the answer"), graph traversal (BFS/DFS, Dijkstra, topological sort), dynamic programming (overlapping subproblems + optimal substructure), greedy (and proving it safe), divide & conquer.
  • The interview pattern catalog: two pointers, sliding window, fast & slow pointers, prefix sums, monotonic stack, intervals, backtracking, top-K with a heap — most problems are one of ~20 patterns wearing a costume.
  • Deliberate practice protocol: spaced repetition over volume; attempt hard for 20-30 min before reading solutions, then re-solve from scratch days later; talk aloud — the interview grades reasoning, not typing.
  • In the wild: bloom filters, consistent hashing, LRU implementations, merkle trees — where this theme meets the system-design one.
  • To explore: CLRS / Algorithm Design Manual (Skiena) as references, NeetCode 150 as a practice syllabus, complexity of the structures your languages actually ship.

Practice

  • Exercism (source) — mentored small exercises in your language of the week; warms up the syntax so the pattern work below measures reasoning, not typing.
  • Project Euler (source) — math-flavored problems where the naive solution never finishes; forces the complexity-as-a-habit instinct.
  • Advent of Code (source) — a yearly ladder of puzzles that quietly walks the whole toolkit (parsing, graphs, DP, intervals); ideal as a new-language vehicle too.
  • Interview-prep track (source) — the structured NeetCode-150-shaped syllabus: structures from scratch, then the pattern catalog with spaced re-solves.
  • Coding Challenges (source) — build-your-own-wc/Redis/load-balancer projects where the structures show up in the wild instead of in a judge harness.

Related