Bekleme Süresiyle Hisse Senedi Almak ve Satmak için En İyi Zaman
'Bekleme Süresiyle Hisse Senedi Almak ve Satmak için En İyi Zaman' sorunu için ayrıntılı kılavuz ve Python uygulaması.
1. Öğren
'Bekleme Süresiyle Hisse Senedi Almak ve Satmak için En İyi Zaman' sorunu, 2D DP bölümündeki önemli bir zorluktur.
Bu uygulama Python'deki orta düzey mantığa odaklanır.
Sunduğumuz çözümlerde teknik doğruluğu ve kod okunabilirliğini ön planda tutuyoruz.
2. Real-World Applications
3. Visual Intuition
Bekleme Süresiyle Hisse Senedi Almak ve Satmak için En İyi Zamanın mantık akışını görselleştirme.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
Bekleme Süresiyle Hisse Senedi Almak ve Satmak için En İyi Zaman hakkındaki sorun bildirimini dikkatlice okuyun.
2. Formulate brute force
Basit bir yinelemeli çözüm taslağı oluşturun.
3. Identify inefficiency
Gereksiz hesaplamaları arayın.
4. Optimize search path
Süreci hızlandırmak için karma veya sıralama kullanın.
5. Final Implementation
Üretim standartları kodunu temizleyin.
Sorun Bildirimi
Size fiyatların[i] belirli bir hisse senedinin i'inci gündeki fiyatı olduğu bir dizi fiyatları veriliyor.
Elde edebileceğiniz maksimum karı bulun. Aşağıdaki kısıtlamalarla istediğiniz sayıda işlemi tamamlayabilirsiniz (yani bir hisse senedini birden çok kez alıp bir hisseyi satabilirsiniz):
- Hisse senedinizi sattıktan sonra ertesi gün hisse satın alamazsınız (yani bir gün bekleme süresi).
Not: Aynı anda birden fazla işlem yapamazsınız (yani, tekrar satın almadan önce hisse senedini satmanız gerekir).
maxProfit(prices: List[int]) -> int adlı bir işlev yazın.
- •1 <= len(prices) <= 5000
- •0 <= prices[i] <= 1000
Örnekler
prices = [1,2,3,0,2]
3
Transactions = [buy, sell, cooldown, buy, sell].
prices = [1]
0
No transaction can be made.
Need a Hint?
Edge Cases to Watch
- Boş giriş yapıları
- Tek eleman girişleri
- Büyük sayısal sınırlar
Çözmeye Hazır mısınız?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.
Mülakat Bilgileri ve Çeşitleri
Karmaşıklık Analizi Dökümü
Neden Zaman: Directly evaluates all possibilities.
Neden Uzay: Uses standard local memory.
Neden Zaman: Optimized paths reduce total operations.
Neden Uzay: May trade memory for speed.
Optimize Edilmiş Çözüm Python Kodu
Optimize Edilmiş Çözüm Python Kodu
def max_profit_opt(prices):
dp = {} # (i, buying)
def dfs(i, buying):
if i >= len(prices): return 0
if (i, buying) in dp: return dp[(i, buying)]
if buying:
buy = dfs(i + 1, not buying) - prices[i]
skip = dfs(i + 1, buying)
dp[(i, buying)] = max(buy, skip)
else:
sell = dfs(i + 2, not buying) + prices[i]
skip = dfs(i + 1, buying)
dp[(i, buying)] = max(sell, skip)
return dp[(i, buying)]
return dfs(0, True)Kaba Kuvvet Kodu (Spoiler Korumalı)
Kaba Kuvvet Kodu (Spoiler Korumalı)
def max_profit_brute(prices):
def dfs(i, buying):
if i >= len(prices): return 0
if buying:
buy = dfs(i + 1, not buying) - prices[i]
skip = dfs(i + 1, buying)
return max(buy, skip)
else:
sell = dfs(i + 2, not buying) + prices[i]
skip = dfs(i + 1, buying)
return max(sell, skip)
return dfs(0, True)Algorithm Pattern Checklist
When dealing with 2D DP data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
Standart 2B DP problem özellikleri geçerlidir.
İlgili Sorular
PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!
Önerilen Python Kaynakları
İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.
Python Deneme/Hariç ve Hata İşleme
Python komut dosyalarınızın çökmesini önleyin. Try, hariç, nihayet blokları ve özel istisnaların nasıl düzgün şekilde oluşturulacağını öğrenin.
Python'da String'i Int'ye Dönüştürme
Python'da int() işlevini kullanarak bir dizeyi tam sayıya nasıl dönüştüreceğinizi öğrenin. Hataları güvenli bir şekilde ele alın ve sayıları ikili, sekizli veya onaltılıdan dönüştürün.
Python DateTime Biçimlendirme Hile Sayfası
Datetime, strftime ve strptime kullanarak Python'da tarih ve saatleri nasıl ayrıştıracağınızı ve biçimlendireceğinizi öğrenin.
Python Dekoratörler ve Dekoratör Tasarım Deseni: Temel Farklılıklar
Python dekoratörlerini ve klasik dekoratör tasarım modelini karşılaştırın. Çalıştırılabilir kodla tanım zamanı işlev sarma ve çalışma zamanı dinamik nesne bileşimi arasındaki farkları anlayın.