Select a core topic to begin diving deep into algorithms and structural concepts.
Make the locally optimal choice at each stage with the hope of finding a global optimum.
Maintain a dynamic window (subset of elements) to optimize problems looking for contiguous subsegments.
Solve complex problems by breaking them down into simpler subproblems and storing the results.
Hierarchical data structure consisting of nodes.
Structures used to model pairwise relations between objects.