Best Time to Buy and Sell Stock
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
- arg1integer-array
- Döndürürinteger
Örnekler
- Girdi
- arg1 = [7, 2, 5, 9, 1, 4]
- Çıktı
- 7
- Girdi
- arg1 = [9, 7, 4, 3, 1]
- Çıktı
- 0
Gönderirken +12 gizli test
İpuçları
Tek tek açın. Her biri biraz daha fazlasını gösterir.
Satış her zaman alıştan sonra gelir. Bir satış günü seç: Hangi alış günü en çok kârı sağlar?
Belirli bir satış günü için en iyi alış günü, ondan önceki en ucuz gündür. İleri doğru ilerlerken bu günü aklında tutarsan her seferinde yeniden aramana gerek kalmaz.
Günleri sırayla ilerleyin ve iki sayıyı takip edin: şimdiye kadarki en düşük fiyat ve şimdiye kadarki en iyi kâr. Her gün, bugünkü fiyat eksi en düşük fiyat ile en iyi kârı karşılaştırın, ardından en düşük fiyatı güncelleyin.
Bu problemin tam çözüm anlatımı yakında geliyor.
Benzer problemler
Aynı fikirleri kullanan problemler. İki üçünü çözmek bir kalıbı kalıcı hale getirir.
Python
def maxProfit(prices):
# Kodu buraya yazınDurum 1
Durum 2
Girdi
arg1 = [7, 2, 5, 9, 1, 4]
Beklenen
7