01
Data Structures
- Arrays provide contiguous indexed storage.
- Linked structures provide flexible relationships between elements.
- Stacks and queues encode restricted access patterns.
- Hash tables provide expected constant-time lookup under suitable assumptions.
- Trees represent hierarchical or ordered structures.
- Graphs represent arbitrary relationships among entities.
02
Algorithmic Design
- Divide and conquer breaks a problem into independently solvable subproblems.
- Dynamic programming exploits overlapping subproblems and optimal substructure.
- Greedy algorithms make locally optimal choices under conditions that permit global optimality.
- Graph algorithms operate on connectivity, paths, flows, and relationships.
- Randomized algorithms deliberately use randomness in computation.
03
Complexity
T(n) = O(f(n))
Asymptotic analysis describes how resource requirements grow as input size increases. Common measures include time complexity, space complexity, communication complexity, and query complexity.