Complexity Analysis
Big O, time & space complexity, growth rates, how to analyze any code
Arrays & Prefix Sum
Array operations, prefix sums, range queries, difference arrays
Two Pointers
Opposite ends, fast/slow pointers, in-place operations, pair finding
Hashing / HashMap
HashMap patterns, Counter, Set, frequency counting, complement lookup
Sliding Window
Fixed & variable windows, expand/shrink strategy, substring problems
Binary Search
Classic search, search on answer, rotated arrays, boundary conditions
Stack
LIFO, parentheses matching, monotonic stack, min stack, expression eval
Queue & Deque
FIFO, deque, BFS traversal, monotonic deque, sliding window max
Linked List
Reversal, cycle detection, merge, dummy node, fast & slow pointers
Recursion
Base case, recursive case, call stack, memoization, divide & conquer
Backtracking
Choose-Explore-Unchoose, subsets, permutations, combinations, N-Queens
Greedy
Local optimal → global optimal, interval problems, jump game, when it works
Trees & BST
Traversals, BST property, depth, LCA, level-order, path problems
Heap / Priority Queue
Min-heap, max-heap, top K, median finder, heapq in Python
Graphs — BFS & DFS
Adjacency list, BFS shortest path, DFS components, grid problems, cycles
Dynamic Programming
State definition, transitions, 1D & 2D DP, knapsack, LCS, coin change
Bit Manipulation
Bitwise operators, checking/setting bits, XOR properties, O(1) tricks
Advanced Graphs
Dijkstra's Algorithm for weights, DSU for connectivity and cycles
Segment Trees
Dynamic range sum/min/max queries, O(log n) point updates
Tries (Prefix Trees)
O(L) prefix search, dictionary building, autocomplete structures