Loading

Quipoin Menu

Learn • Practice • Grow

data-structure-with-java / Memoization vs Tabulation
tutorial

Memoization vs Tabulation

The two main DP implementation strategies have different trade-offs.

Memoization (Top-Down)
  • Recursive approach.
  • Start from the desired solution and go down to base cases.
  • Store results in a cache (e.g., array or hash map) to avoid recomputation.
  • Easier to code, especially for complex state transitions.
  • May cause stack overflow for deep recursion.

Tabulation (Bottom-Up)
  • Iterative approach.
  • Start from base cases and build up to the desired solution.
  • Usually uses an array (DP table).
  • More efficient (no recursion overhead) and avoids stack overflow.
  • Sometimes harder to derive the order of computation.

Example: Fibonacci numbers


// Memoization (top-down)
int[] memo = new int[n+1];
int fibMemo(int n) {
if (n <= 1) return n;
if (memo[n] != 0) return memo[n];
memo[n] = fibMemo(n-1) + fibMemo(n-2);
return memo[n];
}

// Tabulation (bottom-up)
int fibTab(int n) {
int[] dp = new int[n+1];
dp[0] = 0; dp[1] = 1;
for (int i = 2; i <= n; i++) dp[i] = dp[i-1] + dp[i-2];
return dp[n];
}
Two Minute Drill
  • Memoization: recursion + caching. Easier to implement.
  • Tabulation: iterative DP table. More efficient, avoids stack.
  • Both have same time complexity, but tabulation often uses less overhead.
  • Choose based on problem nature and constraints.

Need more clarification?

Drop us an email at career@quipoinfotech.com