DSA & Competitive Programming
A map of all data structures, algorithms, and competitive programming notes.
Fundamentals
- DSA — Core concepts: data structures vs algorithms, ADTs, complexity analysis, asymptotic notation
- Time and Space Complexity of an Algorithm — Big-O, Omega, Theta analysis
- Competitive Programmer’s Handbook Chapter 1 — CP foundations
Data Structures
Linear
- Stacks, Queues & Monotonicity — LIFO/FIFO structures, monotonic stack patterns
- Linked Lists — Dynamic sequential access
Non-Linear
- Graph Theory — Vertices, edges, adjacency lists/matrices, directed/undirected, weighted/unweighted, DAGs
- trees — Hierarchical structures, binary trees, traversals
Algorithms
Sorting
- Sorting Basics — Bubble, selection, insertion sort; stable vs unstable; in-place vs out-of-place
Searching
- Binary Search — Log-time search on sorted/monotonic spaces; iterative & recursive implementations
Recursion
- Recursion — Divide and conquer, call stack mechanics, base case & recursive case
Patterns
- Two Pointers — Parallel, colliding, seeker/placeholder variants for array problems
Problem-Solving Patterns
| Pattern | When to Use | Related Notes |
|---|---|---|
| Two Pointers | Sorted arrays, pair finding | Two Pointers |
| Binary Search | Sorted/searchable space | Binary Search |
| Recursion | Tree traversal, divide & conquer | Recursion |
| Monotonic Stack | Next greater/smaller element | Stacks, Queues and Monotonicity |
| Graph Traversal | BFS/DFS on networks | Graph Theory |