Best Time to Buy and Sell Stock
Você recebe o preço de uma ação ao longo de vários dias, um preço por dia. Você pode comprar uma ação em algum dia e vendê-la em um dia posterior. O lucro é o preço de venda menos o preço de compra, e você quer obter o maior lucro possível. Se todas as negociações resultarem em prejuízo, basta não negociar e ganhar 0.
Considere os preços [7, 2, 5, 9, 1, 4]. Comprar por 2 no dia 1 e vender por 9 no dia 3 gera 7, e nenhum outro par de dias dá um resultado melhor. Comprar por 1 no dia 4 parece tentador porque é o dia mais barato, mas o único dia posterior tem preço de venda 4, então essa negociação gera apenas 3.
Tentar todos os pares de dias funciona, mas é lento demais para listas de preços longas. Em vez disso, você pode fazer uma única passagem pelos dias. Se você vender hoje, o melhor dia para ter comprado é o dia mais barato até agora; então, mantenha esse menor preço à medida que avança. O melhor lucro de hoje é o preço de hoje menos o menor preço, e a resposta é o maior desses valores.
Escreva uma função chamada maxProfit que recebe uma lista de inteiros prices, em que prices[i] é o preço da ação no dia i, e retorna o maior lucro que você pode obter comprando em um dia e vendendo em um dia posterior. Se nenhuma negociação gerar lucro, retorne 0.
Restrições: 1 ≤ prices.length ≤ 10^5, 0 ≤ prices[i] ≤ 10^4.
Função
- arg1integer-array
- Retornainteger
Exemplos
- Entrada
- arg1 = [7, 2, 5, 9, 1, 4]
- Saída
- 7
- Entrada
- arg1 = [9, 7, 4, 3, 1]
- Saída
- 0
+12 testes ocultos ao enviar
Dicas
Abra uma de cada vez. Cada uma revela um pouco mais.
A venda sempre ocorre depois da compra. Escolha um dia para vender: qual dia para comprar dá o maior lucro?
Para um determinado dia de venda, o melhor dia para comprar é o dia mais barato antes dele. Você não precisa procurar esse dia novamente a cada vez se lembrar dele enquanto avança.
Percorra os dias em ordem e mantenha dois números: o menor preço até então e o melhor lucro até então. Em cada dia, compare o preço de hoje menos o menor preço com o melhor lucro e, em seguida, atualize o menor preço.
Em breve, uma explicação completa deste problema.
Problemas parecidos
Problemas que usam as mesmas ideias. Resolver dois ou três é o que fixa um padrão.
Python
def maxProfit(prices):
# Escreva o código aquiCaso 1
Caso 2
Entrada
arg1 = [7, 2, 5, 9, 1, 4]
Esperado
7