Data-Structures-and-Algorithms
Data-Structures-and-Algorithms copied to clipboard
Notes on data structures and algorithms for competitive programming
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 [email protected]
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
- Introduction to Problem Solving
- Basic Data Structures
- Bits and Subsets
- Binary Search
Graph Theory
- Introduction to Graph Theory
- Breadth-First Search
- Depth-First Search
- Dijkstra's Algorithm
Dynamic Programming
- Introduction to Dynamic Programming
- Bitmask 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