Notes
I've started to collect notes here that I find useful or interesting.
Arrays and Hashing
Hash tables for O(1) lookups; In-place array manipulation; Frequency counting
Sliding Window
Fixed vs variable size windows; Window state management; Window boundaries
Two Pointers
Start/end pointer movement; Fast/slow pointer technique; Meeting in middle
Binary Search
Binary search variations; Search space reduction; Boundary conditions
Linked Lists
Pointer manipulation; Multiple pointer traversal; Cycle detection
Stacks and Queues
LIFO/FIFO principles; Monotonic stack patterns; Nested structure validation
Trees
Tree traversal strategies; Recursion vs iteration; Path tracking
Tries
Prefix-based search; Character-by-character traversal; Word dictionary operations
Heaps and Priority Queues
Binary heap properties; K-way processing; Stream operations
Graphs
Graph traversal (BFS/DFS); Graph representation; Cycle detection
Backtracking
State space exploration; Constraint handling; Solution building
Dynamic Programming
State transition; Memoization vs tabulation; Optimal substructure
Greedy Algorithms
Local vs global optimization; Interval processing; Sorting-based greedy
Bit Manipulation
Bitwise operations; Bit flags; Bit counting techniques