Best Time to Buy and Sell Stock
Ottieni il prezzo di un'azione per una serie di giorni, un prezzo al giorno. Puoi acquistare un'azione in un giorno e venderla in un giorno successivo. Il profitto è il prezzo di vendita meno il prezzo di acquisto e vuoi ottenere il profitto più alto possibile. Se ogni operazione comporterebbe una perdita, semplicemente non fai operazioni e guadagni 0.
Considera i prezzi [7, 2, 5, 9, 1, 4]. Acquistare a 2 il giorno 1 e vendere a 9 il giorno 3 frutta 7, e nessun'altra coppia di giorni dà un risultato migliore. Acquistare a 1 il giorno 4 sembra allettante perché è il giorno più economico, ma l'unico giorno successivo prevede una vendita a 4, quindi l'operazione frutta solo 3.
Provare ogni coppia di giorni funziona, ma è troppo lento per lunghi elenchi di prezzi. Puoi farlo con un'unica scorsa dei giorni. Se vendi oggi, il giorno migliore in cui aver acquistato è quello con il prezzo più basso fino a quel momento, quindi tieni traccia del prezzo più basso man mano che procedi. Il profitto migliore di oggi è il prezzo di oggi meno il prezzo più basso, e la risposta è il più grande di questi valori.
Scrivi una funzione chiamata maxProfit che riceva un elenco di numeri interi prices, dove prices[i] è il prezzo dell'azione nel giorno i, e restituisca il profitto massimo che puoi ottenere acquistando in un giorno e vendendo in un giorno successivo. Se nessuna operazione genera un profitto, restituisci 0.
Vincoli: 1 ≤ prices.length ≤ 10^5, 0 ≤ prices[i] ≤ 10^4.
Funzione
- arg1integer-array
- Restituisceinteger
Esempi
- Input
- arg1 = [7, 2, 5, 9, 1, 4]
- Output
- 7
- Input
- arg1 = [9, 7, 4, 3, 1]
- Output
- 0
+12 test nascosti all’invio
Suggerimenti
Aprili uno alla volta. Ognuno rivela un po’ di più.
La vendita avviene sempre dopo l'acquisto. Scegli un giorno per vendere: quale giorno per acquistare dà il maggior profitto?
Per un dato giorno di vendita, il giorno migliore per acquistare è il giorno più economico che lo precede. Non devi cercarlo di nuovo ogni volta, se te lo ricordi mentre procedi.
Scorri i giorni in ordine e tieni traccia di due numeri: il prezzo più basso finora e il miglior profitto finora. Ogni giorno, confronta il prezzo di oggi meno il prezzo più basso con il miglior profitto, poi aggiorna il prezzo più basso.
Presto una spiegazione completa di questo problema.
Problemi simili
Problemi che usano le stesse idee. Risolverne due o tre è ciò che fissa uno schema.
Python
def maxProfit(prices):
# Scrivi il codice quiCaso 1
Caso 2
Input
arg1 = [7, 2, 5, 9, 1, 4]
Atteso
7