Tekdüze Yığın: Sonraki Büyük Öğe
Aralık sorgularını tek geçişte yanıtlayın.
Tekdüze Yığın: Sonraki Büyük Öğe, CoddyKit'te ücretsiz bir Competitive Programming Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Competitive Programming Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Competitive Programming Academy kursu toplamda 4 dersten oluşur.
Bir Sonraki Daha Büyük Değer Problemi
Her sayı için sağındaki ilk daha büyük değeri bulmak istersiniz. Kaba kuvvet O(n kare) sürer, ancak bir monotonik yığın bunu tek geçişte yapar.
Monotonik Ne Demektir
Monotonik yığın, değerlerini sıralı biçimde, burada azalan sırada tutar; böylece bu sıra bozulacağı anda bir yanıtın bulunduğunu anlarız.
Değerleri Değil, Dizinleri Saklayın
Ham sayılar yerine dizinleri yığına itin. Böylece daha büyük bir öğe ortaya çıktığında tam olarak hangi konumu dolduracağınızı bilirsiniz.
stack = []
ans = [-1] * len(nums)Soldan Sağa İlerleyin
Dizinin üzerinden bir kez geçin. Her dizinde ya sonucu belirlenmiş öğeleri çıkarırsınız ya da geçerli dizini daha sonrası için yığına itersiniz.
for i in range(len(nums)):Daha Küçük Olanları Çıkarın
Geçerli değer, üstteki dizindeki değerden büyük olduğu sürece, o üstteki öğe sonunda kendisinden sonraki daha büyük öğeyi bulmuş demektir.
while stack and nums[i] > nums[stack[-1]]:Yanıtı Kaydedin
Üstteki dizini çıkarın ve yanıtını geçerli değere ayarlayın. Her dizin tam olarak bir kez çözümlendiği için iş yükü doğrusal kalır.
j = stack.pop()
ans[j] = nums[i]İtin ve Devam Edin
Daha küçük olanların tümünü çözdükten sonra geçerli dizini yığına itin; böylece kendisi için ilerideki daha büyük öğeyi bekleyebilir.
stack.append(i)Geride Kalanların Yanıtı Yoktur
Sonunda hâlâ yığında bulunan dizinler daha büyük bir değerle hiç karşılaşmamıştır. Varsayılan değerleri -1 olarak kalır; bu da böyle bir değerin bulunmadığı anlamına gelir.
Neden O(n)
Her dizin bir kez yığına itilir ve bir kez çıkarılır. İçteki while döngüsüne rağmen toplam iş yükü tüm tarama boyunca doğrusal kalır.
Bir Sonraki Daha Küçük için Tersine Çevirin
Bunun yerine bir sonraki daha küçük öğeyi mi arıyorsunuz? Büyükten küçüğe karşılaştırmayı çevirerek yığını artan sırada tutun.
while stack and nums[i] < nums[stack[-1]]:Bir Hile Değil, Bir Örüntü
Aralık sorguları, hisse senedi fiyatları ve histogram alanlarının tümü bu fikri yeniden kullanır. Monotonik yığın, ezberlemeye değer temel bir yarışma örüntüsüdür.
Hızlı Kontrol
Bir sonraki daha büyük öğeyi monotonik yığınla buluyorsunuz. Toplam çalışma süresi neden doğrusaldır?
Özet: Tek Geçişte Birçok Yanıt
Bir sonraki daha büyük öğeleri O(n) zamanda bulmak için dizinlerden oluşan azalan bir monotonik yığın kullandınız. Bu örüntü birçok aralık problemini çözmenizi sağlar. 🚀
Sıkça Sorulan Sorular
“Tekdüze Yığın: Sonraki Büyük Öğe” dersi ücretsiz mi?
Evet — “Tekdüze Yığın: Sonraki Büyük Öğe” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Competitive Programming Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Competitive Programming Academy kursu toplamda 4 dersten oluşur.
“Tekdüze Yığın: Sonraki Büyük Öğe” dersinde ne öğreneceğim?
Aralık sorgularını tek geçişte yanıtlayın. Competitive Programming Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Competitive Programming Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Competitive Programming Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Tekdüze Yığın: Sonraki Büyük Öğe” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Competitive Programming Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Competitive Programming Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Eşleşen Köşeli Ayraçlar için Yığınlar
- Tekdüze Yığın: Sonraki Büyük Öğe
- Kuyruklar ve collections.deque
- Deque ile Kayan Pencere Maksimumu