Data Structures and Algorithms
Introduction
This repository contains notes that have been converted from slideshows I created in college for the University of Florida Programming Team. I plan on adding notes for the more advanced topics I did not get to while at college. If you have any questions, requests, or find an error in the provided notes, please feel free to either open an issue or contact me at cormacpayne@ufl.edu
Websites for Practice
Below are websites I recommend for practicing contests and individual problems
Books
Below are books that I recommend reading if you are interested in learning more about competitive programming, as well as data structures and algorithms
- Competitive Programming, 3rd Edition - Steven Halim
- The Algorithm Design Manual, 2nd Edition - Steven Skiena
- Introduction to Graph Theory, 2nd Edition - Richard Trudeau
- Introductory Graph Theory - Gary Chartrand
Completed Notes
Getting Started
Graph Theory
Dynamic Programming
Wish List
Graph Theory
- Minimum Spanning Tree
- Prim's Algorithm
- Kruskal's Algorithm
- Boruvka's Algorithm
- All Pairs Shortest Path
- Floyd Warshall Algorithm
- Single Source Shortest Path
- Bellman-Ford Algorithm
- Heavy-Light Decomposition
- Strongly Connected Components
- Other
- Vertex Cover
- Edge Coloring
- Euler Tour
- Hamiltonian Cycle
- Max Flow
- Ford-Fulkerson Algorithm
- Dinic's Algorithm
- Push-Relabel Algorithm
- Min-Cost Max-Flow
- Maximum Bipartite Matching
- Hungarian Algorithm
Geometry
- Convex Hull
- Rotating Calipers
- Sweep Line
Number Theory
- Sieve of Eratosthenes
String Algorithms
- Knuth-Morris-Pratt Algorithm
- Boyer-Moore Algorithm
- Longest Common Substring/Subsequence
- Shortest Common Superstring
- Palindromes
Data Structures
- String Data Structures
- Suffix Tree/Array
- Trie
- Segment Trees
- Binary Indexed Trees
- Binary Search Trees
- Kd Trees