Competitive Programming Academy · Ders

Bir Kuralı Karşılayan Pencereleri Sayma

En fazla-K ile en fazla-(K-1) arasındaki fark hilesi.

4. ders / 413 adım

Bir Kuralı Karşılayan Pencereleri Sayma, CoddyKit'te ücretsiz bir Competitive Programming Academy dersidir. Bu, 4 dersinin 4. 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.

Ölçmek Değil, Saymak

Bazen en uzun alt diziyi bulmak değil, bir kuralı sağlayan alt dizileri saymak gerekir. Küçük bir yöntem bunu kolay bir kaydırmalı pencere problemine dönüştürür. 🔢

Tam K Zorluğu

Bir şeyden tam olarak K tane içeren alt dizileri doğrudan saymak zordur. Sınır sürekli değiştiğinden tek ve temiz bir pencere oluşturmak kolay değildir.

En Fazla K Olarak Yeniden Çerçeveleme

En fazla K içeren alt dizileri tek bir pencereyle saymak çok daha kolaydır. Sağı genişletirken, her geçerli sol konum bir alt dizi oluşturur.

Çıkarma Yöntemi

Tam K, atMost(K) eksi atMost(K - 1) değerine eşittir. İki kolay sayımı birleştirerek aslında istediğiniz zor sayımı elde edersiniz.

answer = at_most(k) - at_most(k - 1)

Yardımcı İşlevi Oluşturun

En fazla k içeren alt dizileri sayan tek bir işlev yazın. Bu işlev bir pencereyi kaydırır ve sayı k'yı aştığında pencereyi küçültür.

def at_most(k):
    left = 0
    total = 0

İhlalde Küçültün

Sağı genişletin ve pencereyi güncelleyin. Pencere k'dan fazla değer içerdiği sürece solu ileri taşıyarak tekrar aralığa sokun.

    while count > k:
        # remove a[left]
        left += 1

Pencere Sayısını Ekleyin

Pencereyi düzelttikten sonra, sağda biten ve başlangıcı soldan itibaren herhangi bir konum olan her alt dizi geçerlidir. Sağ eksi sol artı bir değerini ekleyin.

    total += right - left + 1

Bu Sayım Neden Çalışır

Sabit bir sağ konumu için geçerli başlangıçlar sol, sol+1 ve sağa kadar olan konumlardır. Bu, tamamı en fazla k koşulunu sağlayan tam olarak right - left + 1 alt dizi demektir.

İki Çağrıyı Birleştirin

Yardımcı işlevi iki kez çalıştırın ve sonuçları çıkarın. Her çağrı O(n) sürdüğünden, tam K sayımı da genel olarak doğrusal kalır.

return at_most(k) - at_most(k - 1)

Kenar Durumunu Koruyun

k sıfırken atMost(k - 1) ifadesi eksi bir kullanır. Yardımcı işlevin yine anlamlı bir sıfır sayımı döndürmesi için bu durumu ele alın.

Nerelerde Uygulanır

Bu en fazla eksi en fazla fikri, tam olarak K farklı değer, K tek sayı veya pencere başına tekdüze herhangi bir özellik içeren alt dizileri saymaya uygundur.

Hızlı Kontrol

Tam olarak K farklı eleman içeren alt dizileri saymak istiyorsunuz.

Özet

Tam K sayımı yalnızca atMost(K) eksi atMost(K - 1) değeridir. Her yardımcı işlev bir pencereyi O(n) sürede kaydırır; böylece toplam sayım doğrusal kalır. ✅

Başlamak ücretsiz

Yapay zeka eğitmeniyle Python öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“Bir Kuralı Karşılayan Pencereleri Sayma” dersi ücretsiz mi?

Evet — “Bir Kuralı Karşılayan Pencereleri Sayma” 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.

“Bir Kuralı Karşılayan Pencereleri Sayma” dersinde ne öğreneceğim?

En fazla-K ile en fazla-(K-1) arasındaki fark hilesi. 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 4. dersidir.

“Bir Kuralı Karşılayan Pencereleri Sayma” 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