Algorithms (and data structures) studies how we can efficiently solve common computational problems. Many of these problems can be done in brute force, but there are clever insights that allow for a smaller big-O complexity.

Algorithms

  1. ๐Ÿ”Ž Binary Search finds the insertion point for an element in a sorted sequence.
  2. ๐Ÿš‹ Breadth First Search and ๐Ÿšƒ Depth First Search traverse graphs.
  3. ๐Ÿš„ Dijkstra and ๐Ÿ›ฉ๏ธ Bellman-Ford finds single-source shortest paths.
  4. ๐Ÿš“ Floyd-Warshall finds all-pairs shortest paths.
  5. ๐Ÿšˆ Prim and ๐ŸšŸ Kruskal finds minimum spanning trees.
  6. โ›ฐ๏ธ Kahn and โฑ๏ธ Finish-Time DFS calculates topological sorts.
  7. ๐Ÿข Kosaraju finds strongly connected components.
  8. ๐Ÿ’ง Edmonds-Karp solves max-flow-min-cut.

Data Structures

  1. ๐ŸŒณ Binary Search Tree supports quick search and insert for sorted data.
  2. ๐Ÿ—ป Heap maintains min/max pops of a sequence.
  3. ๐Ÿ—ผ Union-Find tracks disjoint sets.
  4. ๐Ÿ“ Hashmap maps keys to values.