Tecnica che risolve problemi complessi suddividendoli in sottoproblemi sovrapposti, memorizzando i risultati intermedi.
Il pattern Dynamic Programming (programmazione dinamica) permette di risolvere problemi complessi dividendoli in sottoproblemi più semplici i cui risultati vengono riutilizzati. È particolarmente utile quando i sottoproblemi si ripetono più volte.
Usa la programmazione dinamica quando:
| Tecnica | Descrizione |
|---|---|
| Top-Down | Uso della memorizzazione (memoization) con ricorsione |
| Bottom-Up | Costruzione iterativa di una tabella di soluzioni |
from functools import lru_cache @lru_cache(maxsize=None) def fib(n): if n < 2: return n return fib(n-1) + fib(n-2)
✅ Complessità:
O(n)O(n)| Nome | Difficoltà | Pattern | Link |
|---|---|---|---|
| Fibonacci Numbers | Easy | Top-Down | Leetcode #509 |
| Coin Change | Medium | Bottom-Up | Leetcode #322 |
| Edit Distance | Hard | Bottom-Up | Leetcode #72 |
| Longest Increasing Subsequence | Medium | Bottom-Up | Leetcode #300 |
Ricevi tips settimanali, nuovi pattern e aggiornamenti esclusivi per migliorare costantemente le tue skills algoritmiche
No spam, unsubscribe anytime. Privacy policy compliant.