Bir Map ile Gruplama ve Kovalama
Anagramları ve benzer öğeleri gruplayın.
Bir Map ile Gruplama ve Kovalama, 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.
Gruplama Bir Örüntüdür
Birçok problem, ortak bir özelliği paylaşan öğeleri gruplamanızı ister. Anahtardan kovaya yapılan eşleme, bunu tek ve temiz bir geçişe dönüştürür. 🗂️
Gruplama Anahtarını Seçin
Tüm yöntemin özü, aynı gruptaki öğeler için aynı olan bir anahtar seçmektir. Bunu doğru yaparsanız gerisi kolaydır.
Varsayılan Sözlükle Kovalama
Her yeni anahtarın boş bir kovayla başlaması için bir liste varsayılanlı sözlük kullanın. Anahtarın var olup olmadığını hiç denetlemeden öğeleri append edebilirsiniz.
from collections import defaultdict
buckets = defaultdict(list)Temel Döngü
Her öğe için anahtarını hesaplayın ve öğeyi o anahtarın kovasına append edin. Her öğe için bir satır kullanarak her şeyi gruplarsınız.
for word in words:
buckets[key_of(word)].append(word)Anagramları Gruplama
Anagramların sıralanmış harfleri aynıdır; bu nedenle sıralanmış dize mükemmel bir grup anahtarıdır. Bir kez sıralayın, sonra ona göre kovalayın.
k = ''.join(sorted(word))
buckets[k].append(word)Sayımlar için Demet Anahtarları
Sıralama yavaş olduğunda, harf sayılarından oluşan bir demet de anahtar olarak kullanılabilir. Demetler hash'lenebilir olduğundan sözlüğe sorunsuzca yerleştirilir.
k = tuple(Counter(word)[c] for c in 'abcdefghijklmnopqrstuvwxyz')Bir Özelliğe Göre Kovalama
Anahtarı değiştirerek sayıları yalnızca kalanlarına, tek-çift durumlarına veya uzunluklarına göre gruplayabilirsiniz. Örüntü, problemler arasında aynı kalır.
for n in nums:
buckets[n % 3].append(n)Kova Sıralaması Fikri
Değerler küçük bir aralığa sığıyorsa her birini indisli bir kovaya bırakın ve sırayla okuyun. Bu, neredeyse doğrusal bir sıralamadır.
for x in nums:
bucket[x].append(x)Sonuçları Toplama
Kovalama işleminden sonra yanıt genellikle sözlüğün values sonucudur. Değerlendirme sistemi grupların kendisini istiyorsa bunları listeye dönüştürün.
result = list(buckets.values())Grup Başına Sayma
Yalnızca grup boyutlarına ihtiyacınız varsa kovalamayı bir Sayaçta yapın veya sonunda uzunlukları toplayın. Sorunun gerçekten ne istediğine göre seçim yapın.
sizes = {k: len(v) for k, v in buckets.items()}Eşleme Neden Kazanır
Bir eşlemeyle gruplama, her çifti karşılaştırmak yerine O(n) sürer. Hash'lenmiş anahtar, eşleştirme işini sizin için yapar.
Hızlı Kontrol
Anagramların aynı kovaya düşeceği şekilde kelimeleri gruplamak istiyorsunuz.
Özet
Tek bir O(n) geçişte her öğenin anahtarını bir varsayılan sözlük kovasına eşleyerek gruplama yapın. Anahtarı iyi seçerseniz gruplama problemleri kolayca çözülür. 🚀
Sıkça Sorulan Sorular
“Bir Map ile Gruplama ve Kovalama” dersi ücretsiz mi?
Evet — “Bir Map ile Gruplama ve Kovalama” 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 Map ile Gruplama ve Kovalama” dersinde ne öğreneceğim?
Anagramları ve benzer öğeleri gruplayı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 4. dersidir.
“Bir Map ile Gruplama ve Kovalama” 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
- Üyelik ve Tekilleştirme için Kümeler
- Arama Tablosu Olarak Sözlükler
- Counter ve defaultdict Uygulamada
- Bir Map ile Gruplama ve Kovalama