Dynamic Programming

Here is a quick introduction to the dynamic programming paradigm!

What is dynamic programming?

Dynamic programming algorithms solve problems by combining results of subproblems— just like divide and conquer algorithms.

Those who cannot remember the past are condemned to repeat it” – Dynamic Programming


  1. Overlapping subproblems: The subproblems of a given problem are not independent. In other words, two subproblems share a problem.

  2. Optimal substructure property: The overall optimal solution of the problem can be constructed from the optimal solutions of its subproblems.

Dynamic programming patterns

Memoization (top down)

The memoized version of a problem is similar to the regular recursive version, except that it looks for the answer of a subproblem in a lookup table before computing its solution.

Level up your interview prep. Join Educative to access 70+ hands-on prep courses.