/Data-Structures-and-Algorithms

Notes on data structures and algorithms for competitive programming

Primary LanguageJava

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

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