Two Pointers
Opposite-direction, fast-slow, sliding compare.
Pattern-Based Learning
Learn the skeleton once, apply to hundreds of problems. Each pattern breaks down into variations - the template stays 90% the same, only the details change.
Opposite-direction, fast-slow, sliding compare.
Turn O(n²) subarray loops into O(n) with a moving window.
Narrow the search space in half each step - the O(log n) hammer.
Precompute running sums for O(1) range queries and subarray counting.
HashMap-based pair/triple sum lookups. Two Sum, Three Sum, Four Sum, best time to buy/sell.
Cyclic rotation, reversal-based operations, in-place swaps, and the Dutch flag.
O(1) range updates with O(n) reconstruction. Range increment/decrement queries.
Count how many subarrays each element participates in.
When the answer space is monotonic, binary search the answer and check feasibility.
Next permutation, permutation ranking, generating permutations systematically.
Segment strings using dictionary words, with DP and memoization.
Shortest string that has two given strings as subsequences.
Maximum subarray sum in O(n), with circular, 2D, and product variants.
Multiple pointers, three-way partition, k-sum beyond three.
Place each number at its correct index in O(n). For problems with numbers 1..n.
Reverse, merge, detect cycles, find middle, LRU cache.
Binary trees, BSTs, traversals (in/pre/post/level), LCA, diameter.
Fenwick tree, segment tree, sqrt decomposition, Mo's algorithm, treap.
O(1) range min/max/gcd queries with O(n log n) preprocessing.
Range updates and range queries in O(log n). Lazy tags for assignment/additive updates.
Floyd's tortoise and hare, Brent's algorithm. Cycle in LL, arrays, functional graphs.
Build trees from traversals, serialization, construct BST from preorder.
Binary lifting, Euler tour + RMQ, tarjan's offline LCA.
Small-to-large merging on trees for offline subtree queries in O(n log n).
Two BFS/DFS technique. Find longest path in any tree. Center(s) of tree.
Tarjan's offline algorithm for batch LCA queries using DSU.
AHU algorithm, rooted/unrooted tree isomorphism, canonical form.
Union-find with rollback capability for offline queries.
Jump pointers for ancestors, LCA, path queries in O(log n).
Point updates, range queries, building and querying segment trees.
Path sum queries, max/min edge on path, path aggregates with binary lifting.
Morris traversal, stack-based pre/in/post-order without recursion.
Min/max heap, top-k, median finding, merge k-sorted, Huffman coding.
Prefix tree for dictionary, autocomplete, spell check, IP routing, XOR max pair.
Next greater/smaller element, largest rectangle in histogram, trapping rain water.
Frequency counting, anagram grouping, subarray sum equals k, longest consecutive sequence.
Min stack, queue by stacks, circular deque, sliding window max (deque).
Counting sort, bucket sort, frequency array, cumulative distribution, pigeonhole.
Quickselect, median of medians, k-th smallest in sorted matrix, k-th largest in stream.
Deque maintaining monotonic order for sliding window min/max, range min queries.
Median from data stream, sliding window median, IPO capital, schedule tasks.
Valid parentheses generation, longest valid parentheses, minimum add to make valid.
Why O(n) operations can cost O(1) each on average (two-pointer, stack, deque).
Shunting yard, recursive descent, prefix/postfix conversion, basic calculator.
Max XOR pair/subarray using binary trie. Properties of XOR on bits.
Merge k-sorted arrays/lists, smallest range covering k lists, merge k-sorted iterators.
Memoization, tabulation, state definition, transitions. The universal hammer for optimal substructure.
Decision tree exploration, pruning, permutations, combinations, subsets, N-queens.
Make the locally optimal choice at each step. Interval scheduling, coin change, Huffman.
BFS, DFS, connected components, bipartite, DAGs, topological sort, SCC.
Dijkstra, Bellman-Ford, Floyd-Warshall, SPFA, 0-1 BFS, A*.
DP over subsets using bitmasks. TSP, assignment, graph covering, state space search.
Master theorem, merge sort, quick sort, closest pair, maximum subarray (D&C).
0/1 knapsack, unbounded knapsack, bounded knapsack, subset sum, coin change II.
Johnson's algorithm, minimum cost flow, Gomory-Hu tree, dominator tree.
Check bipartite, maximum bipartite matching, König's theorem, Hall's theorem.
Map sparse coordinates to dense indices for segment trees, BIT, DP.
Kahn's algorithm, DFS-based sort, course schedule, dependency resolution.
Kruskal's, Prim's, Borůvka's, MST verification, second-best MST.
Ford-Fulkerson, Edmonds-Karp, Dinic's, max-flow min-cut, circulation.
Split the input in half, solve each half, combine results. Subset sum, knapsack, TSP.
DP optimization: line container for max/min queries. Li Chao tree, dynamic CHT.
Decompose tree by centroids for O(log n) path queries. Distance queries, counting paths.
Sweep-line algorithm for interval union, skyline, rectangle area, closest pair.
Implication graph, strongly connected components. Boolean satisfiability with 2 variables per clause.
Tarjan's algorithm for bridges, articulation points, biconnected components.
Successive shortest augmenting path, potentials, cycle canceling, assignment problem.
Circulation with demands, feasible flow with lower/upper bounds, max flow with lower bounds.
Meet-in-the-middle on graphs. Word ladder, 8-puzzle, shortest path in large state spaces.
Heuristic-guided search for shortest path. Manhattan distance, admissible heuristics.
System of inequalities reduced to shortest paths. Bellman-Ford on constraint graph.
Each node has exactly one outgoing edge. Cycle detection, distance to cycle, Josephus.
Bipartite matching via max flow. Assignment, Hall's marriage, vertex cover, edge cover.
Chromatic number, greedy coloring, Welsh-Powell, Brooks' theorem, interval graph coloring.
Heavy hitters, count-min sketch, reservoir sampling, streaming median, frequent items.
Kosaraju's, Tarjan's algorithm. Condensation DAG, 2-SAT, dominator trees.
Model problems as state transitions on a graph. Water jug, missionaries and cannibals, 8-puzzle.
Interval scheduling, interval partitioning, meeting rooms, merge intervals, insert interval.
Build a valid solution step by step. Grid construction, permutation construction, array construction.
Constraint propagation, forward checking, branch and bound, sudoku, cryptarithmetic.
Enqueue all sources at level 0. Rotten oranges, walls and gates, as far from land as possible.
Number of islands, max area island, number of distinct islands, surrounded regions.
String fundamentals: reverse, rotation, comparison, pattern matching basics, anagram detection.
KMP, Rabin-Karp, Z-algorithm. Find pattern in text, count occurrences, shortest palindrome.
LIS, LCS, edit distance, longest arithmetic subsequence, wiggle sequence, Russian doll envelopes.
Matrix traversal, rotation, spiral, set zeroes, word search, island perimeter, game of life.
DP on strings: edit distance, interleaving string, distinct subsequences, decode ways, regular expression.
Longest palindromic substring (Manacher's), count palindromes, palindrome partitioning, break a palindrome.
Rolling hash, Rabin-Karp, double hash, detect plagiarism, longest common substring via binary search + hash.
Build suffix array, LCP array, longest repeated substring, number of distinct substrings, longest common substring.
Multiple pattern matching automaton. Built on Trie + failure links. Find all occurrences of many patterns in text.
Compute Z-array in O(n): longest substring starting at i that matches prefix. String periodicity, pattern matching.
Longest palindromic substring in O(n) using symmetry expansion and center caching.
Minimal DFA accepting all suffixes of a string. Count distinct substrings, longest common substring, lexicographically smallest.
Lexicographically minimal rotation (Booth's), string matching on rotation, periodic strings.
Split string into Lyndon words (non-increasing). Duval's algorithm. Minimal rotation, necklace computation.
Build smallest/greatest string under constraints. Lexicographically smallest after swaps, K-th lexicographically smallest.
Sliding window applied to strings: anagram substrings, min window substring, substring concatenation.
Number theory, combinatorics, Euclidean gcd/lcm, modular arithmetic, prime sieve.
XOR tricks, bit hacks, Brian Kernighan, subset enumeration via bits, gray code, bitmask DP.
Permutations, combinations, stars and bars, inclusion-exclusion, generating functions.
Nim, Grundy numbers, Sprague-Grundy theorem, impartial games, minimax.
Convex hull, line intersection, polygon area, point in polygon, rotating calipers.
Extended Euclidean, modular inverse, CRT, Euler's totient, Fermat's little theorem, Miller-Rabin, Pollard's Rho.
Expected value DP, Markov chains, probability distributions, random walk, gambler's ruin.
Find peak of unimodal function. Divide into three parts, discard one. Bitonic arrays, convex functions.
Polynomial multiplication, convolution, big integer multiplication, signal processing.
Grundy numbers for impartial games. Compute mex, XOR combined games, game of Nim, Kayles, subtraction games.
Solve system of linear congruences. Garner's algorithm for big integers. RSA-related problems.
Graham scan, Andrew's monotone chain, Jarvis march, dynamic convex hull, convex hull of a polygon.
Count unions of sets, derangements, coprime count, principle applied to number theory and combinatorics.
Counting: BSTs, parentheses, Dyck paths, triangulations, non-crossing partitions. Recurrence and closed form.
Find the last remaining position when every k-th is eliminated. O(n) DP, O(k log n) for large n.
Eratosthenes, linear sieve, segmented sieve, prime counting, divisor count, totient sieve, Mobius sieve.
Count distinct objects under group action. Orbit-counting, necklace/bracelet enumeration, Polya enumeration.
Binary representation where consecutive values differ by one bit. Sequence generation, n-queens bitset, subset generation.
Solve linear systems over GF(2). XOR basis, linear basis of array, find if target reachable, maximum XOR subset.
Compute large binomial coefficients modulo prime. nCr mod p using base-p digits. Digit DP and combinatorics intersection.
Count/generate monotonic paths on integer lattice. Delannoy numbers, with/without obstacles, with/without diagonals.
Combinatorial DP beyond basics: Stirling numbers, Eulerian numbers, Bell numbers, partition DP, set partition.
Width/diameter of convex polygon, minimum bounding rectangle, distance between convex polygons. O(n).
Digit DP where carry propagates through positions. Count numbers with sum of digits equal, etc.
Expected time to absorption, probability of reaching boundary, gambler's ruin, 1D/2D walk, drunkard's walk.
Numerical properties, digital root, self numbers, happy numbers, narcissistic numbers, Kaprekar, Ulam, perfect numbers.
Matrix operations, Gaussian elimination, determinant, rank, eigenvalues, linear transformations.
Newton's method, binary search for roots, integration, differentiation, gradient descent, Monte Carlo.
Job sequencing, interval scheduling, CPU scheduling, task scheduling with dependencies, resource allocation.
Area/perimeter/volume of geometric shapes, union/intersection of shapes, packing, tiling, cutting stock.
Cache policies (LRU, LFU, ARC), OOP design, system design, concurrency problems, brainteasers.
Singleton, factory, observer, strategy, decorator, adapter, command, iterator. OOP design in coding interviews.
Quick sort, merge sort, heap sort, counting sort, radix sort, bucket sort, tim sort, intro sort.
Implement the problem description faithfully. Text processing, game simulation, protocol implementation.
Linear recurrences via fast matrix power. Fibonacci in O(log n), linear DP acceleration.
Randomized quickselect, reservoir sampling, Fisher-Yates shuffle, Monte Carlo methods, Miller-Rabin.
Order statistic tree, sorted container, balanced BST simulation. K-th element, count of elements in range.
When BFS beats DFS and vice versa. Shortest path, topological, bipartite, connected components, backtracking.
Interval union, intersection, overlap, covering, partition, scheduling. Sweep-line, greedy, segment tree.
Tree DP: diameter, paths, subtree aggregates, rerooting DP, knapsack on tree, tree matching.
Disjoint set union with path compression and union by size. Dynamic connectivity, Kruskal, connected components.
DP on number digits with tight/loose bounds. Count numbers with property in range. Sum of digits, divisible by k.
DP over intervals: matrix chain multiplication, burst balloons, palindrome partitioning II, stone game, optimal BST.
DP on 2D grids: unique paths, minimum path sum, dungeon game, cherry pickup, triangle, falling path sum.
DP with explicit states. Best time to buy/sell stock, paint house, student attendance, k transactions.
Top-down DP, memoization patterns, recursion tree optimization, stack depth management, tabulation conversion.
Neighbor iteration, matrix prefix sum, BFS/DFS on grid, island patterns, shortest distance, multi-source.
Range sum/product queries with point updates. LIS count, inversion count, order statistics, offline queries.
Decompose tree into heavy/light paths for path queries with segment tree. Path sum, max, min, update.
Flatten tree into array via Euler tour. Subtree queries become range queries. LCA via RMQ, subtree aggregates.
Offline query processing with sqrt decomposition. Sort queries by block, maintain pointer movement. Range queries.
Basis of numbers under XOR. Maximum XOR subset, minimum XOR subset, K-th smallest XOR, rank of XOR space.
Hierholzer's algorithm for Eulerian path. Chinese postman problem, de Bruijn sequence. Hierholzer, Fleury.
DP optimization: monotone opt property (quadrangle inequality). DP[i][j] = min over k < j of DP[i-1][k] + C[k][j].
Partition array into sqrt blocks. Batch queries, lazy rebuild. Range sum/update, mode query, k-th smallest in range.
Versioned segment trees. K-th smallest in range, count distinct in range, sum/update across versions.
Randomized BST with heap property. Split/merge operations. Range reverse, lazy propagation, order statistics, implicit treap.
CDQ divide-and-conquer for multi-dimensional offline queries. 3D partial order, dynamic convex hull, DP optimization.
std::bitset / BigInt manipulation for DP optimization. Bitset knapsack, graph reachability, matching, subset queries.
DP optimization for convex piecewise-linear functions. Priority queue management. Tree DP, grid DP, scheduling DP.
Segment tree with min/max operations that break standard lazy. Range chmin/chmax, range sum queries in O(n log n).
DP with equilibrium constraints. Balance brackets, load balancing, fair division, partition with balance target.
DP over row/column with state profile. Bitmask DP on grids, tiling problems, crosswords, domino tilings.
DP optimization using Lagrangian relaxation. Attach penalty lambda for constraint, binary search lambda. k-trades, partition.
DP on arithmetic properties. Sum of digits, divisibility, carry DP, digit DP variants with arithmetic constraints.
Count distinct subsequences, number of subsequences with given sum/product, subsequence pattern matching.
At-most-k trick, exactly-k count formula, multiple-pointer windows, deque optimization for range max/min.
Prefix sum on 2D grid. Range sum queries, submatrix sum, count submatrices with sum ≤ k.
Sliding window DP optimization: DP[i] = max over j in window of DP[j] + f(j,i). Range min/max of DP values.
Best time to buy/sell with 1, 2, k transactions. Cooldown, transaction fee, frozen state. State machine DP.
Rolling array, 1D to O(1) space, Knuth optimization, monotone queue optimization, divide & conquer optimization.
Sliding window applied to strings: anagram substrings, min window substring, substring concatenation, find all anagrams.