beginner
Big O Notation
Measure how an algorithm's time and space grow as input size increases
Dynamic Programming
Solve overlapping subproblems once and reuse the results
Greedy Algorithms
Build a solution by always making the locally optimal choice
Recursion
Solve problems by having a function call itself on smaller inputs
Searching Algorithms
Find a value in a collection using linear or binary search
Sliding Window
Track a contiguous range in a sequence to answer subarray questions efficiently
Sorting Algorithms
Arrange elements in order using bubble sort and merge sort
Two Pointers
Use two indices moving through a sequence to solve problems in linear time
intermediate
Binary Search Patterns
Apply binary search beyond sorted arrays to find boundaries and answers
Divide and Conquer
Break a problem into independent subproblems, solve them, and combine the results
Graph Traversal
Visit every reachable node in a graph using breadth-first or depth-first search
Memoization
Cache the results of expensive function calls to avoid recomputing subproblems