Menu
CoddyTech

Best Time to Buy and Sell Stock

KolayAçgözlüpython iconjava iconcpp iconc iconjs icon+10

Birkaç günlük bir dönem boyunca her gün için bir fiyat olmak üzere tek bir hissenin fiyatı verilir. Bir gün bir hisse alabilir ve daha sonraki bir gün satabilirsin. Kâr, satış fiyatından alış fiyatının çıkarılmasıyla bulunur ve mümkün olan en yüksek kârı elde etmek istersin. Her işlem para kaybettirecekse işlem yapmaz ve 0 kazanırsın.

[7, 2, 5, 9, 1, 4] fiyatlarını ele alalım. 1. günde 2'den alıp 3. günde 9'dan satmak 7 kazandırır ve başka hiçbir gün çifti daha iyi sonuç vermez. 4. günde 1'den almak cazip görünür çünkü bu, fiyatın en ucuz olduğu gündür; ancak sonraki tek günün satış fiyatı 4'tür, dolayısıyla bu işlem yalnızca 3 kazandırır.

Tüm gün çiftlerini denemek işe yarar ama uzun fiyat listeleri için çok yavaştır. Bunun yerine günleri tek bir geçişte inceleyebilirsin. Bugün satış yapacaksan, en iyi alış günü şimdiye kadarki en ucuz gündür; bu yüzden ilerledikçe en düşük fiyatı aklında tut. Bugünkü en iyi kâr, bugünün fiyatından en düşük fiyatın çıkarılmasıyla bulunur ve yanıt bunların en büyüğüdür.

maxProfit adlı, prices bir tam sayı listesi alan; burada prices[i], i. gündeki hisse senedi fiyatıdır ve daha sonraki bir günde satmak üzere bir gün satın alarak elde edebileceğin en yüksek kârı döndüren bir fonksiyon yaz. Hiçbir işlem kâr sağlamıyorsa 0 döndür.

Kısıtlamalar: 1 ≤ prices.length ≤ 10^5, 0 ≤ prices[i] ≤ 10^4.

Fonksiyon

maxProfit(arg1: integer-array) → integer
arg1integer-array
Döndürürinteger

Örnekler

Girdi
arg1 = [7, 2, 5, 9, 1, 4]
Çıktı
7

lock iconGönderirken +12 gizli test

Kodu sıfırla
def maxProfit(prices):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Girdi

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

Beklenen

7