LeetVision Docs Back to Main Site
LeetVision Docs
© 2026 LeetVision. All rights reserved.
HomeAboutContact
Stage 1 — Fundamentals/Complexity Analysis

Complexity Cheat Sheet

Easy 6 min read

Complexity Cheat Sheet

Introduction

This comprehensive cheat sheet provides a quick reference for the time and space complexities of common data structures and algorithms. It's designed to optimize your problem-solving process, enhance pattern recognition, and prepare you for technical interviews. Leverage this resource to swiftly analyze and articulate the performance characteristics of your solutions.

Quick Overview

A condensed reference guide for essential algorithmic complexities, enabling rapid identification and evaluation of solution efficiency for LeetCode and system design contexts.

Motivation

Mastering complexity analysis is foundational for any software engineer, especially when tackling competitive programming or technical interviews. The ability to quickly ascertain an algorithm's Big O notation is paramount for optimizing solutions, identifying bottlenecks, and communicating design trade-offs. This cheat sheet serves as an indispensable tool, allowing for rapid recall of common complexities, thereby freeing up cognitive load to focus on the intricate logic of problem-solving rather than rote memorization. It fosters pattern recognition, helping engineers swiftly categorize problems and apply optimal data structures and algorithms, which is crucial for achieving efficient and scalable code.

Core Idea

The core idea is to consolidate the time and space complexities of fundamental data structure operations and algorithmic patterns into an easily digestible and quickly searchable format. This resource aims to provide instant access to crucial performance metrics, empowering engineers to make informed decisions about algorithm selection and optimization without needing to re-derive complexities for known patterns repeatedly.

Time Complexity

N/A - Complexity analysis applies to algorithms and data structures, not to a static documentation page itself. The value of this cheat sheet lies in reducing the O(N) mental processing time for recalling specific complexities to an O(1) lookup, thereby optimizing problem-solving speed.

Space Complexity

N/A - Similar to time complexity, space complexity is not applicable to a documentation page. The benefit of using this cheat sheet is to provide a readily available reference, minimizing the cognitive space required to store and retrieve these fundamental complexities mentally.

Common Misconceptions

  • Mistaking average-case complexity for worst-case, especially with hash tables or quicksort, leading to underestimation of potential performance issues.
  • Ignoring recursive call stack space when calculating space complexity, which can often be O(N) or O(log N) for deep recursion.
  • Assuming O(1) for all array operations, forgetting that insertions/deletions in the middle or resizing dynamic arrays can incur O(N) costs.
  • Focusing too heavily on constant factors or lower-order terms (e.g., O(N^2 + N) being seen as significantly different from O(N^2)) in Big O notation, which primarily describes asymptotic behavior.
  • Believing that a cheat sheet replaces fundamental understanding. It's a tool for recall, not a substitute for knowing why an algorithm has a particular complexity.

Comparison Table

ApproachProsCons
Deriving Complexity from ScratchFosters deep understanding of algorithmic mechanics; handles novel or custom data structures/algorithms accurately; essential for true mastery.Time-consuming, especially in high-pressure interview settings; prone to errors if rushed or foundational knowledge is weak.
Rote MemorizationExtremely fast recall for common patterns; no external resources needed (e.g., in interviews).Fragile: easy to forget; difficult to apply to variations; can lead to misapplication if understanding is shallow.
Using a Complexity Cheat SheetRapid and accurate lookup for standard cases; reduces cognitive load; aids pattern recognition by seeing patterns summarized.Reliance on external resource (not allowed in most interviews); still requires understanding how to interpret and apply the information.

Frequently Asked Questions

Q: When should I use Big O, Big Omega, or Big Theta notation? Big O (O) describes the upper bound (worst-case), Big Omega (Ω) describes the lower bound (best-case), and Big Theta (Θ) describes the tight bound (average-case, or when best and worst cases are the same order). In interviews, 'Big O' is commonly used to discuss the worst-case time complexity unless otherwise specified.

Q: Does constant time O(1) mean a single operation? Not necessarily. O(1) means the number of operations does not grow with the input size. It could be 5 operations or 500, but as long as it's a fixed number, it's considered O(1). However, in real-world performance, constant factors can matter significantly for small inputs.

Q: How do I calculate space complexity for recursive algorithms? For recursive algorithms, space complexity often includes the auxiliary space for the recursion call stack. This depth can be O(N) for linear recursion (e.g., factorial), or O(log N) for divide-and-conquer algorithms like binary search or balanced tree traversals, where N is the input size or tree height.

Q: Why is it O(V + E) for graph traversals and not O(V * E)? For algorithms like BFS or DFS, each vertex (V) and each edge (E) is visited or processed at most a constant number of times. Summing these ensures all parts of the graph are covered without redundant processing, leading to an additive O(V + E) complexity. O(V*E) would imply nested iterations over vertices and edges, which isn't typical for simple traversals.

Key Takeaways

  • Understand the core operations' complexities for fundamental data structures: arrays, linked lists, hash maps, trees, and heaps.
  • Recognize common algorithmic patterns (sorting, searching, graph traversals, recursion) and their associated complexities.
  • Differentiate between average-case and worst-case complexities, especially for structures like hash tables and algorithms like quicksort.
  • Remember that space complexity isn't just for explicit data structures but also for the recursion call stack and auxiliary variables.
  • Use this cheat sheet as a tool for rapid recall and pattern recognition, but always strive to understand the underlying reasons for each complexity.

Cheat Sheet

Common Data Structure Operations

Data StructureOperationTime Complexity (Avg)Time Complexity (Worst)Space Complexity (Worst)Notes
ArrayAccess (by index)O(1)O(1)O(N)
Search (unsorted)O(N)O(N)O(N)
Insert/Delete (end)O(1)O(1)O(N)Amortized for dynamic arrays
Insert/Delete (middle)O(N)O(N)O(N)Requires shifting elements
Linked List (Singly)Access (by index)O(N)O(N)O(N)Traversal from head
SearchO(N)O(N)O(N)
Insert/Delete (head)O(1)O(1)O(N)
Insert/Delete (tail)O(N)O(N)O(N)O(1) for Doubly Linked List with tail ptr
Hash TableInsert/Search/DeleteO(1)O(N)O(N)Worst case due to collisions
Binary Search TreeInsert/Search/DeleteO(log N)O(N)O(N)Worst case for skewed tree
AVL/Red-Black TreeInsert/Search/DeleteO(log N)O(log N)O(N)Self-balancing ensures O(log N) worst case
Min/Max HeapInsertO(log N)O(log N)O(N)Up-heap operation
Extract Min/MaxO(log N)O(log N)O(N)Down-heap operation
Peek Min/MaxO(1)O(1)O(N)

Common Algorithm Complexities

Algorithm TypeOperation/ContextTime Complexity (Avg)Time Complexity (Worst)Space Complexity (Worst)Notes
SortingBubble Sort, Selection SortO(N^2)O(N^2)O(1)Simple, inefficient for large N
Insertion SortO(N^2)O(N^2)O(1)O(N) best case (nearly sorted)
Merge SortO(N log N)O(N log N)O(N)Stable, good for linked lists
Quick SortO(N log N)O(N^2)O(log N)In-place (typically), pivot choice crucial
Heap SortO(N log N)O(N log N)O(1)In-place, not stable
SearchingLinear SearchO(N)O(N)O(1)Unsorted data
Binary SearchO(log N)O(log N)O(1) (iterative)Sorted data, divide and conquer
Graph TraversalBFS (Breadth-First Search)O(V + E)O(V + E)O(V)Queue-based, shortest path on unweighted graphs
DFS (Depth-First Search)O(V + E)O(V + E)O(V)Stack-based (or recursion stack)
Recursive FunctionsLinear Recursion (e.g., factorial)O(N)O(N)O(N)Stack depth proportional to input
Binary Recursion (e.g., Fibonacci)O(2^N)O(2^N)O(N)Exponential, can be optimized with memoization
String OperationsSubstring search (naive)O(M*N)O(M*N)O(1)M=pattern length, N=text length
KMP (Knuth-Morris-Pratt)O(N + M)O(N + M)O(M)Optimal for substring search

General Rules & Heuristics

  • Loops: A single loop iterating N times (or N times k constant) contributes O(N). Nested loops of k depth contribute O(N^k). If inner loop depends on outer loop, it's often O(N^2) (e.g., for i=0 to N, for j=i to N).
  • Sequential Operations: If operations run one after another, add their complexities. The dominant term determines the overall complexity: O(A) + O(B) = O(max(A, B)). Example: O(N) + O(N^2) = O(N^2).
  • Dominant Term: Always drop lower-order terms and constant coefficients. O(5N^2 + 2N log N + 100) = O(N^2).
  • Logarithms: Logarithmic complexities (O(log N)) frequently arise in algorithms that repeatedly divide the problem size in half (e.g., Binary Search, balanced binary trees, Math.log() operations).
  • Constant Time O(1): Operations that take a fixed amount of time regardless of input size. Examples include direct array index access, arithmetic operations, and (on average) hash map insertions/lookups.
  • Space Complexity: Accounts for auxiliary data structures (stacks, queues, hash maps, arrays) used by the algorithm, as well as the recursive call stack depth. If no extra space beyond input and a few variables is used, it's O(1).

Implementations

Practice Problems

Practice problems are being curated for this concept.
PreviousNext

Related Modules

ArraysStringsHashing