Prova final — Programação Dinâmica
Três problemas inéditos (não vistos nas aulas) para testar se você sai desta seção resolvendo qualquer problema do tema: um fácil, um médio e um difícil. Alguns casos de teste são ocultos — como no LeetCode de verdade. Resolva em Python ou JavaScript.
Min Cost Climbing Stairs
Cada degrau i tem um custo cost[i]. Você pode subir 1 ou 2 degraus por vez, e começar do degrau 0 ou do 1. Retorne o custo mínimo para chegar ao topo (além do último degrau).
Exemplo: [10,15,20] → 15 (começa no degrau 1, paga 15, e sobe 2 ao topo).
Partition Equal Subset Sum
Dado um array nums de inteiros positivos, retorne true se ele pode ser dividido em dois subconjuntos com a mesma soma.
Exemplo: [1,5,11,5] → true ([1,5,5] e [11], ambos somam 11).
Edit Distance
Dadas duas palavras word1 e word2, retorne o número mínimo de operações (inserir, remover ou substituir um caractere) para transformar uma na outra.
Exemplo: "horse" → "ros" → 3 (remove 'h', substitui 'r'→'r'… → na prática: rose, ros... 3 operações).