Comprehensive algorithm and data structure reference for competitive programming in Java 17.
Latest Release includes:
- cheatsheet.pdf - Minimal version (core algorithms and API)
- notesheet.pdf - Full version (all algorithms and advanced topics)
Both PDFs are automatically built on every commit via GitHub Actions.
Two versions available:
- Minimal: Core algorithms and API
- Full: All algorithms and advanced topics
make build-minimal # Default - builds minimal version
make build-full # Builds full versionOr manually:
python3 build.py minimal # or 'full'
pdflatex notesheet.texRequirements: Python 3 with PyYAML (pip install pyyaml)
- Java 17 Features: var, records, switch expressions, pattern matching
- Core API: String, Arrays, Collections (ArrayList, HashMap, TreeMap, etc.)
- Streams API: Complete guide to functional-style collection processing
- BitSet: Space-efficient bit vectors for large boolean arrays
- Graphs: BFS, DFS, Dijkstra, Union-Find, MST, SCC, LCA, topological sort
- Dynamic Programming: Knapsack, LCS, LIS, bitmask DP, grid DP
- Trees: Diameter, LCA with binary lifting, Euler tour
- Data Structures: Segment tree, Fenwick tree
- Geometry: Convex hull, 2D/3D primitives
- Number Theory: GCD, modular arithmetic, sieve
- Plus: string algorithms, combinatorial search, and competitive programming tips
All algorithms include O() complexity analysis.
See CONTENTS.md for the complete list.
├── notesheet.tex # Main document
├── sections/ # Modular topic files (17 sections)
├── Makefile # Build automation
├── .github/workflows/ # GitHub Actions for auto-build
├── README.md
├── CONTENTS.md # Detailed table of contents
└── CONTRIBUTING.md # How to add new algorithms
See CONTRIBUTING.md for guidelines on adding new algorithms.
MIT License - Free for educational and competitive programming use.