İki İşaretçiyle Değişken Pencere
Bir koşulu karşılamak için büyütün ve küçültün.
İki İşaretçiyle Değişken Pencere, 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.
Pencere Değiştiğinde
Bazı problemlerde pencere uzunluğu sabit değildir. Bunun yerine pencere, toplamın bir sınırın altında kalması gibi bir koşulu doğru tutmak için büyür ve küçülür.
İki İşaretçi, Tek Pencere
Pencerenin kenarlarını belirlemek için sol ve sağ olmak üzere iki indeks tutun. Sağ işaretçi pencereyi genişletirken sol işaretçi gerektiğinde küçültmek için onu takip eder.
left = 0
window = 0Sağa Doğru Genişletin
Her elemanın üzerinden sağa doğru ilerleyin ve onu pencereye dahil edin. Yeni değeri toplama eklemek gibi, takip ettiğiniz durumu güncelleyin.
for right in range(n):
window += a[right]Gerektiğinde Küçültün
Pencere kuralı ihlal ettiği sürece solu sağa kaydırın ve o elemanı çıkarın. Böylece geri dönmeden koşulu yeniden sağlarsınız.
while window > limit:
window -= a[left]
left += 1Geçerli Pencereyi Okuyun
İç döngü sona erdiğinde, soldan sağa uzanan pencere geçerlidir. Uzunluğu sağ eksi sol artı birdir ve kullanıma hazırdır.
length = right - left + 1En İyi Sonucunuzu Kaydedin
Cevabınızı bu geçerli pencereyle güncelleyin; çoğu zaman şimdiye kadarki en uzun pencereyi ararsınız. Hiçbir şeyi kaçırmamak için bunu her yinelemede yapın.
best = max(best, right - left + 1)Neden Doğrusaldır
Her işaretçi yalnızca ileri hareket eder, asla geri dönmez. Sol ve sağ birlikte en fazla n adım ilerlediğinden tüm tarama O(n) sürer.
Tekdüze Gereksinim
Bu yöntem, pencereyi genişletmenin koşulu karşılamayı yalnızca zorlaştırdığı durumlarda çalışır. Sol işaretçinin hiç geri dönmemesini sağlayan şey bu tekdüze davranıştır.
En Uzun ve En Kısa Pencere
En kısa geçerli pencere için kural hâlâ sağlandığı sürece küçültün ve döngüden çıkmadan önce sonucu kaydedin. İşaretçi mantığı aynı kalır.
while window >= target:
best = min(best, right - left + 1)
window -= a[left]
left += 1Boş Pencerelere Dikkat Edin
Küçültme pencereyi boş bırakabiliyorsa solun sağı geçmesini önleyin. Ayrıca döndürmeden önce gerçekten bir cevap bulunduğunu doğrulayın.
Kalıbı Fark Etmek
Bir problem, elemanları üzerinde bir koşulu sağlayan en uzun veya en kısa bitişik bölümü istiyorsa değişken pencereyi düşünün.
Hızlı Kontrol
n boyutundaki bir dizi üzerinde iki işaretçili değişken pencere çalıştırıyorsunuz.
Özet
Elemanları dahil etmek için sağı genişletin, kural bozulduğu sürece solu küçültün ve her geçerli pencereyi kaydedin. Yalnızca ileri giden işaretçiler O(n) süreyi korur. ✅
Sıkça Sorulan Sorular
“İki İşaretçiyle Değişken Pencere” dersi ücretsiz mi?
Evet — “İki İşaretçiyle Değişken Pencere” 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.
“İki İşaretçiyle Değişken Pencere” dersinde ne öğreneceğim?
Bir koşulu karşılamak için büyütün ve küçültü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.
“İki İşaretçiyle Değişken Pencere” 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
- Sabit Boyutlu Pencere Toplamları
- İki İşaretçiyle Değişken Pencere
- Tekrarsız En Uzun Alt Dize
- Bir Kuralı Karşılayan Pencereleri Sayma