Curriculum
Explore modules, subtopics, and problem archetypes
Search for a command to run...
Strings are immutable sequences in Python. Most string problems involve pattern matching, transformation, parsing, or frequency analysis.
Python lists are dynamic arrays supporting O(1) indexing and amortized O(1) append. Core structure for most algorithmic problems.
Hash maps provide O(1) average-case lookup, insertion, and deletion. Python's `dict` is an ordered hash map (as of Python 3.7+).
Sets provide O(1) average membership testing, insertion, and deletion. Unordered collections of unique elements.
Linked lists are sequential data structures with nodes containing data and next pointers. Efficient insertions/deletions but O(n) access.
Stacks (LIFO) and Queues (FIFO) are fundamental linear data structures. Python uses `list` for stacks and `collections.deque` for queues.
Heaps maintain partial order for efficient minimum/maximum retrieval. Python's `heapq` implements min-heap.
Trees are hierarchical data structures with nodes containing data and child pointers. Binary trees are most common in interviews.
Graphs represent relationships between entities. Can be directed/undirected, weighted/unweighted, represented as adjacency list/matrix.
Recursion solves problems by breaking into smaller subproblems. Backtracking explores solution space by making choices and undoing them.
DP solves problems by breaking into overlapping subproblems, storing solutions to avoid recomputation.
Greedy makes locally optimal choices hoping to find global optimum. Works when problem has optimal substructure and greedy choice property.
Binary search efficiently finds elements in sorted data by repeatedly halving search space. O(log n) time complexity.
Mathematical problems involving number properties, arithmetic operations, and theoretical concepts.
Bit manipulation operates directly on binary representations. Efficient for certain problems using bitwise operators.
Comprehensive sorting and searching techniques beyond basic implementations.
Advanced patterns using multiple pointers for efficient array/string processing. These techniques optimize brute force O(n²) or O(n³) solutions to O(n) or O(n log n).
File I/O operations for reading, writing, and processing files. Essential for data processing, log analysis, and configuration management in real-world applications.
System design in coding interviews focuses on designing data structures and algorithms for scalable systems. Different from high-level architecture, this covers implementation patterns.
Advanced algorithms and specialized techniques for complex problems.