Mengelompokkan dan Mengategorikan dengan Map
Mengelompokkan anagram dan item serupa
Mengelompokkan dan Mengategorikan dengan Map adalah pelajaran Competitive Programming Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Competitive Programming Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Competitive Programming Academy mencakup 4 pelajaran total.
Pengelompokan adalah Pola
Banyak soal meminta Anda mengelompokkan item yang memiliki kesamaan. Pemetaan dari kunci ke wadah mengubahnya menjadi satu lintasan yang rapi. 🗂️
Pilih Kunci Pengelompokan
Inti triknya adalah memilih kunci yang sama untuk item-item dalam kelompok yang sama. Jika Anda tepat memilihnya, sisanya menjadi mudah.
Membuat Wadah dengan defaultdict
Gunakan defaultdict(list) agar setiap kunci baru memulai wadah kosong. Anda dapat menambahkan item dengan append tanpa pernah memeriksa apakah kunci tersebut ada.
from collections import defaultdict
buckets = defaultdict(list)Perulangan Inti
Untuk setiap item, hitung kuncinya lalu append item tersebut ke wadah milik kunci itu. Satu baris untuk setiap elemen mengelompokkan semuanya.
for word in words:
buckets[key_of(word)].append(word)Mengelompokkan Anagram
Anagram memiliki huruf yang sama setelah diurutkan, jadi string yang telah diurutkan merupakan kunci kelompok yang sempurna. Urutkan sekali, lalu masukkan berdasarkan kunci tersebut.
k = ''.join(sorted(word))
buckets[k].append(word)Kunci Tuple untuk Hitungan
Saat pengurutan lambat, tuple berisi jumlah huruf juga dapat digunakan sebagai kunci. Tuple dapat di-hash, sehingga dapat dimasukkan ke dalam dict dengan rapi.
k = tuple(Counter(word)[c] for c in 'abcdefghijklmnopqrstuvwxyz')Membuat Wadah Berdasarkan Sifat
Kelompokkan angka berdasarkan sisa, paritas, atau panjang hanya dengan mengubah kuncinya. Polanya tetap sama di berbagai soal.
for n in nums:
buckets[n % 3].append(n)Gagasan Pengurutan Berbasis Wadah
Saat nilai berada dalam rentang kecil, masukkan masing-masing ke dalam wadah berindeks lalu bacalah secara berurutan. Itulah pengurutan yang mendekati linear.
for x in nums:
bucket[x].append(x)Kumpulkan Hasil
Setelah pembuatan wadah selesai, jawaban biasanya berupa values dari dict. Konversikan menjadi list jika juri menginginkan kelompoknya secara langsung.
result = list(buckets.values())Menghitung per Kelompok
Jika Anda hanya memerlukan ukuran kelompok, masukkan item ke dalam Counter atau jumlahkan panjangnya di akhir. Pilihlah sesuai dengan yang sebenarnya diminta soal.
sizes = {k: len(v) for k, v in buckets.items()}Mengapa Pemetaan Lebih Unggul
Pengelompokan dengan map membutuhkan O(n), bukan perbandingan setiap pasangan. Kunci yang di-hash melakukan pencocokan untuk Anda.
Pemeriksaan Cepat
Anda ingin mengelompokkan kata agar anagram masuk ke wadah yang sama.
Ringkasan
Kelompokkan dengan memetakan kunci setiap item ke dalam wadah defaultdict dalam satu lintasan O(n). Pilih kunci dengan baik dan soal pengelompokan menjadi jauh lebih mudah. 🚀
Belajar Python dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengelompokkan dan Mengategorikan dengan Map” gratis?
Ya — teks lengkap “Mengelompokkan dan Mengategorikan dengan Map” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Competitive Programming Academy, upgrade ke CoddyKit PRO. Kursus Competitive Programming Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengelompokkan dan Mengategorikan dengan Map”?
Mengelompokkan anagram dan item serupa Kamu berlatih Competitive Programming Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Competitive Programming Academy?
Tidak diperlukan pengalaman sebelumnya. Competitive Programming Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Mengelompokkan dan Mengategorikan dengan Map” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Competitive Programming Academy ini?
Ya. Setiap pelajaran Competitive Programming Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Set untuk Keanggotaan dan Deduplikasi
- Dictionary sebagai Tabel Pencarian
- Counter dan defaultdict dalam Praktik
- Mengelompokkan dan Mengategorikan dengan Map