These topics and concepts are essential for competitive programming.
🔍 Searching and Sorting
Binary searchMerge sortQuick sort
🌐 Graph Algorithms
Breadth-first search (BFS)Depth-first search (DFS)Dijkstra's algorithmFloyd-WarshallKruskal's algorithmPrim's algorithmTopological sort
📈 Dynamic Programming
Understanding the concept of stateMemoizationTabulation
💡 Greedy Algorithms
Activity selectionFractional knapsack
🔄 Divide and Conquer
Master theoremStrassen’s Matrix MultiplicationClosest Pair of Points
🔙 Backtracking
N-Queens problemHamiltonian cycleSudoku solver
🔤 String Algorithms
KMPZ-algorithmRabin-KarpManacher's algorithm
🔢 Number Theory
Euclidean algorithmsModular arithmeticFermat’s theoremEuler’s totient function
🔧 Bit Manipulation
Basic operationsBitmasking
📐 Geometry
Convex hullLine intersection
🔠 Arrays and Strings
ArraysStrings
🔗 Linked Lists
Singly linked listDoubly linked list
📚 Stacks and Queues
StacksQueues
🌳 Trees
Binary treesBinary search treesAVL treesSegment treesFenwick trees
🔺 Heaps
Binary heapFibonacci heap
🔍 Hashing
Hash tableHash functions
🌐 Graphs
Adjacency matrixAdjacency list
🔗 Disjoint Set
Union-find data structure
🔠 Tries
Basic Trie
📦 Containers
VectorListDequeSetMultisetMapMultimap
⚙️ Algorithms
SortReversePermuteLower_boundUpper_bound
🔄 Iterators
Basic Iterators
🛠️ Utility Classes
PairStackQueue
🔢 Combinatorics
PermutationsCombinationsPigeonhole principle
🎲 Probability
Basic ProbabilityConditional ProbabilityBayes' Theorem
🔢 Number Theory
Prime numbersGreatest common divisorLeast common multiple
📐 Geometry
Basic concepts about points, lines, angles, and polygonsLine intersectionCircle properties
📊 Linear Algebra
MatricesDeterminantsEigenvalues and Eigenvectors
📈 Calculus
Differential CalculusIntegral CalculusOptimization problems
🔁 Recursion
Basic RecursionTail Recursion
🧩 Problem-solving Paradigms
Brute forceSliding windowDivide and Conquer
📚 Advanced Data Structures
Suffix arraysSuffix treesTreap