Número da Lista: 5
Conteúdo da Disciplina: Programação Dinâmica
Matrícula | Aluno |
---|---|
22/2015186 | Manoela Silvestre Garcia Chaves |
22/2029243 | Victor Hugo dos Santos Bernardes |
Para essa entrega, a dupla escolheu fazer exercícios da plataforma LeetCode: três de nível difícil e um de nível médio.
Dado um array 'prices', onde 'prices[i]' representa o preço de uma ação no dia i, o objetivo é determinar o lucro máximo possível realizando no máximo duas transações de compra e venda, sem sobreposição (ou seja, é preciso vender antes de comprar novamente). O desafio é escolher os melhores momentos para comprar e vender a fim de maximizar o lucro total.

O exercício pede para encontrar o máximo lucro possível ao comprar e vender ações, dado um número máximo de transações k e uma lista prices com o preço da ação em cada dia. Cada transação consiste em uma compra seguida de uma venda, e não é permitido realizar múltiplas transações simultâneas (ou seja, você deve vender antes de comprar novamente). O objetivo é decidir os melhores dias para comprar e vender, de forma a maximizar o lucro total, respeitando o limite de no máximo k transações.

Dado um array coins contendo diferentes denominações de moedas e um inteiro amount representando um valor-alvo, o objetivo é determinar o menor número de moedas necessárias para totalizar esse valor. Se não for possível formar o valor com as moedas disponíveis, deve-se retornar -1. Cada tipo de moeda pode ser usado um número ilimitado de vezes.

O exercício pede que, dado um conjunto de trabalhos (jobs), cada um com um horário de início (startTime), fim (endTime) e lucro (profit), você retorne o lucro máximo possível ao selecionar um subconjunto desses trabalhos de forma que nenhum deles se sobreponha no tempo. Ou seja, ao escolher um job, você só pode escolher outro que comece após ou exatamente quando o anterior termina. O objetivo é encontrar essa combinação ótima de trabalhos que maximize o lucro total.

Linguagem: Python
Disponível em: https://youtu.be/M3_86JDU4LM