Sabit Boyutlu Pencere Toplamları
k uzunluğundaki pencereyi O(n) içinde kaydırın.
Sabit Boyutlu Pencere Toplamları, CoddyKit'te ücretsiz bir Competitive Programming Academy dersidir. Bu, 4 dersinin 1. 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.
Tekrarlanan Toplam Problemi
Birçok görev, k ardışık elemandan oluşan her bloğun toplamını ister. Her bloğu baştan hesaplamak israftır; bunu daha verimli yapabilirsiniz. 🪟
Önce Yavaş Yöntem
Naif yaklaşım, uzunluğu k olan her pencereyi ayrı ayrı toplar. Bu, aynı işi tekrarlar ve O(n çarpı k) maliyetine yol açar; büyük girdiler için bu yöntem fazla yavaştır.
for i in range(n - k + 1):
s = sum(a[i:i + k])Temel Fikir
Komşu pencereler neredeyse tamamen örtüşür. Bir adım sağa ilerlerken yalnızca en soldaki eleman çıkarılır ve sağa yeni bir eleman eklenir.
İlk Pencereyi Başlatın
Önce ilk k elemanı bir kez toplayarak başlayın. Bu tek toplamı, pencere ileri doğru kaydıkça güncellemeye devam edeceksiniz.
window = sum(a[:k])
best = windowBir Adım Kaydırın
Pencereyi ilerletmek için gelen elemanı ekleyin ve çıkan elemanı çıkarın. Böylece her adım sabit O(1) işte tamamlanır.
for i in range(k, n):
window += a[i] - a[i - k]Cevabınızı Takip Edin
Her kaydırmadan sonra, şimdiye kadar görülen pencere toplamlarının en büyüğü gibi ihtiyaç duyduğunuz değeri güncelleyin. Pencerenin değeri her zaman anında hazır olur.
best = max(best, window)Toplam Maliyet Doğrusaldır
Her elemana eklemek için bir kez, çıkarmak için de bir kez dokunursunuz; bu nedenle tüm tarama O(n) sürer. Böylece büyük kısıtlar kolayca karşılanır.
İndekslere Dikkat Edin
Pencereden çıkan eleman a[i - k] konumundadır; a[i - 1] değildir. Bu kaymayı doğru ayarlamak, sabit pencere kullanımındaki en yaygın hatadır.
Ortalamalar Ekstra Maliyet Getirmez
Toplam yerine pencerenin en yüksek ortalamasını mı istiyorsunuz? Takip ettiğiniz pencere toplamını k'ya bölmeniz yeterlidir. Kaydırma mantığı hiç değişmez.
avg = window / kKüçük Dizileri Ele Alın
Dizi k'dan kısaysa tam bir pencere yoktur. İndeks hatasını önlemek için baştan len(a) ile k'yı karşılaştırın ve erken dönün.
if n < k:
return NoneSabit Pencereler Ne Zaman Uygundur
Pencere uzunluğu sabitse ve toplam, sayım veya basit anlık istatistikler gibi değerleri ucuza birleştirebiliyorsanız bu kalıbı kullanın.
Hızlı Kontrol
Bir dizi boyunca k boyutunda bir pencereyi her seferinde bir adım sağa kaydırıyorsunuz.
Özet
İlk pencereyi bir kez başlatın, ardından her adımda ekleyip çıkararak O(1) sürede kaydırın. Sabit boyutlu taramanın tamamı doğrusal zamanda çalışır. ✅
Sıkça Sorulan Sorular
“Sabit Boyutlu Pencere Toplamları” dersi ücretsiz mi?
Evet — “Sabit Boyutlu Pencere Toplamları” 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.
“Sabit Boyutlu Pencere Toplamları” dersinde ne öğreneceğim?
k uzunluğundaki pencereyi O(n) içinde kaydırı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 1. dersidir.
“Sabit Boyutlu Pencere Toplamları” 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