Menu
CoddyTech

Best Time to Buy and Sell Stock

Otrzymujesz ceny jednej akcji z kolejnych dni, jedną cenę na dzień. Możesz kupić jedną akcję w wybranym dniu i sprzedać ją w późniejszym dniu. Zysk to cena sprzedaży minus cena zakupu. Chcesz osiągnąć jak największy zysk. Jeśli każda transakcja przyniosłaby stratę, po prostu nie dokonujesz transakcji i zarabiasz 0.

Weźmy ceny [7, 2, 5, 9, 1, 4]. Kupując za 2 w dniu 1 i sprzedając za 9 w dniu 3, zarabiasz 7, a żadna inna para dni nie daje większego zysku. Kupno za 1 w dniu 4 wydaje się kuszące, bo to najtańszy dzień, ale w jedynym późniejszym dniu cena sprzedaży wynosi 4, więc taka transakcja przynosi zaledwie 3.

Sprawdzenie każdej pary dni działa, ale przy długich listach cen jest zdecydowanie zbyt wolne. Zamiast tego możesz przejść przez dni tylko raz. Jeśli sprzedajesz dzisiaj, najlepszym dniem zakupu jest najtańszy dzień do tej pory, więc po drodze zapamiętuj najniższą cenę. Najlepszy zysk na dziś to dzisiejsza cena minus najniższa cena, a odpowiedzią jest największa z tych wartości.

Napisz funkcję o nazwie maxProfit, która otrzymuje listę liczb całkowitych prices, gdzie prices[i] to cena akcji w dniu i, i zwraca największy zysk, jaki możesz osiągnąć, kupując akcje jednego dnia i sprzedając je późniejszego dnia. Jeśli żadna transakcja nie przynosi zysku, zwróć 0.

Ograniczenia: 1 ≤ prices.length ≤ 10^5, 0 ≤ prices[i] ≤ 10^4.

Funkcja

maxProfit(arg1: integer-array) → integer
arg1integer-array
Zwracainteger

Przykłady

Wejście
arg1 = [7, 2, 5, 9, 1, 4]
Wyjście
7

lock icon+12 ukrytych testów przy wysłaniu

Zresetuj kod
def maxProfit(prices):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Wejście

arg1 = [7, 2, 5, 9, 1, 4]

Oczekiwane

7