0Pricing
Competitive Programming Academy · Ders

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 = window

Bir 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 / k

Küçü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 None

Sabit 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

  1. Sabit Boyutlu Pencere Toplamları
  2. İki İşaretçiyle Değişken Pencere
  3. Tekrarsız En Uzun Alt Dize
  4. Bir Kuralı Karşılayan Pencereleri Sayma
← Competitive Programming Academy Sayfasına Dön