These topics and concepts are essential for competitive programming.
🔍 Searching and Sorting
Binary search
Merge sort
Quick sort
🌐 Graph Algorithms
Breadth-first search (BFS)
Depth-first search (DFS)
Dijkstra's algorithm
Floyd-Warshall
Kruskal's algorithm
Prim's algorithm
Topological sort
📈 Dynamic Programming
Understanding the concept of state
Memoization
Tabulation
💡 Greedy Algorithms
Activity selection
Fractional knapsack
🔄 Divide and Conquer
Master theorem
Strassen’s Matrix Multiplication
Closest Pair of Points
🔙 Backtracking
N-Queens problem
Hamiltonian cycle
Sudoku solver
🔤 String Algorithms
KMP
Z-algorithm
Rabin-Karp
Manacher's algorithm
🔢 Number Theory
Euclidean algorithms
Modular arithmetic
Fermat’s theorem
Euler’s totient function
🔧 Bit Manipulation
Basic operations
Bitmasking
📐 Geometry
Convex hull
Line intersection
🔠 Arrays and Strings
Arrays
Strings
🔗 Linked Lists
Singly linked list
Doubly linked list
📚 Stacks and Queues
Stacks
Queues
🌳 Trees
Binary trees
Binary search trees
AVL trees
Segment trees
Fenwick trees
🔺 Heaps
Binary heap
Fibonacci heap
🔍 Hashing
Hash table
Hash functions
🌐 Graphs
Adjacency matrix
Adjacency list
🔗 Disjoint Set
Union-find data structure
🔠 Tries
Basic Trie
📦 Containers
Vector
List
Deque
Set
Multiset
Map
Multimap
⚙️ Algorithms
Sort
Reverse
Permute
Lower_bound
Upper_bound
🔄 Iterators
Basic Iterators
🛠️ Utility Classes
Pair
Stack
Queue
🔢 Combinatorics
Permutations
Combinations
Pigeonhole principle
🎲 Probability
Basic Probability
Conditional Probability
Bayes' Theorem
🔢 Number Theory
Prime numbers
Greatest common divisor
Least common multiple
📐 Geometry
Basic concepts about points, lines, angles, and polygons
Line intersection
Circle properties
📊 Linear Algebra
Matrices
Determinants
Eigenvalues and Eigenvectors
📈 Calculus
Differential Calculus
Integral Calculus
Optimization problems
🔁 Recursion
Basic Recursion
Tail Recursion
🧩 Problem-solving Paradigms
Brute force
Sliding window
Divide and Conquer
📚 Advanced Data Structures
Suffix arrays
Suffix trees
Treap