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.