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
- ๐ Binary Search finds the insertion point for an element in a sorted sequence.
- ๐ Breadth First Search and ๐ Depth First Search traverse graphs.
- ๐ Dijkstra and ๐ฉ๏ธ Bellman-Ford finds single-source shortest paths.
- ๐ Floyd-Warshall finds all-pairs shortest paths.
- ๐ Prim and ๐ Kruskal finds minimum spanning trees.
- โฐ๏ธ Kahn and โฑ๏ธ Finish-Time DFS calculates topological sorts.
- ๐ข Kosaraju finds strongly connected components.
- ๐ง Edmonds-Karp solves max-flow-min-cut.
Data Structures
- ๐ณ Binary Search Tree supports quick search and insert for sorted data.
- ๐ป Heap maintains min/max pops of a sequence.
- ๐ผ Union-Find tracks disjoint sets.
- ๐ Hashmap maps keys to values.