#121. Best Time to Buy and Sell Stock

Arrays • Fácil

#array#dynamic-programming#O(n)-tempo#O(1)-espaço
Prévia da Animação
prices = [7, 1, 5, 3, 6, 4]
Clique na aba Solução para ver a visualização
Best Time to Buy and Sell Stock
Enunciado do Problema

Você recebe um array prices onde prices[i] é o preço de uma determinada ação no i-ésimo dia.

Você quer maximizar seu lucro escolhendo um único dia para comprar uma ação e escolhendo um dia diferente no futuro para vender essa ação. Retorne o lucro máximo que você pode obter com esta transação. Se você não puder obter nenhum lucro, retorne 0.

Exemplos

Exemplo 1

Entrada prices = [7,1,5,3,6,4]
Saída 5
Explicação Compre no dia 2 (preço = 1) e venda no dia 5 (preço = 6), lucro = 6-1 = 5. Note que comprar no dia 2 e vender no dia 1 não é permitido porque você deve comprar antes de vender.

Exemplo 2

Entrada prices = [7,6,4,3,1]
Saída 0
Explicação Neste caso, nenhuma transação é feita e o lucro máximo = 0.
Restrições
  • 1 ≤ prices.length ≤ 10⁵
  • 0 ≤ prices[i] ≤ 10⁴