Data Structures

My favorite algorithms books is Algorithm Design Manual by Steven Skiena.

See also: Interviewing.

Links

Array

  • Sorting: quicksort, mergesort
  • Priority queue
  • Binary search

Graph

  • Representing graphs
  • DFS and BFS
  • Spanning trees
  • DAG, topological sort, and SCC
  • Shortest path algorithms: Dijkstra, Bellman-Ford, Floyd-Warshall

Set

  • Disjoint set (Union-Find)

String

  • Hash functions
  • KMP
  • Rabin-Karp (rolling hash)
  • Trie (Prefix tree)

Tree

  • Traversal modes
  • Self-balancing search trees
  • Which traversal would yield sorted elements in a BST?

Hash table

  • Collision resolution: chaining vs open addressing

Dynamic programming

  • Knapsack
  • Longest common subsequence

Fancy

  • Bloom filter – used to implement Safe Browsing feature in Google Chrome