Hash map muncul di mana-mana di soal algoritma karena dia menghubungkan key ke value dan menawarkan waktu lookup rata-rata O(1). Setelah menyelesaikan puluhan soal, saya mulai mengenali pola pemakaian hash map yang berulang.
Hash map sebagai penyimpanan key value
Hash map menyimpan pasangan key value. Key menentukan lokasi, jadi lookup nggak perlu men-scan setiap value yang tersimpan. Biaya rata-ratanya O(1), walaupun collision dan implementasi yang dipilih memengaruhi detailnya.
Saya pakai hash map untuk cek keanggotaan, menghitung frekuensi, dan menghubungkan satu value dengan value lain. Di tiap kasus, saya menentukan key dan value yang terkait dengannya. Dua contoh berikut bikin polanya jadi konkret.
Contoh dalam kode
Waktu saya perlu menghitung karakter di sebuah string, hash map menyimpan jumlah tiap karakter:
function countChars(str) {
const counts = {};
for (let char of str) {
counts[char] = (counts[char] || 0) + 1;
}
return counts;
}
Untuk mendeteksi duplikat, saya pakai hash map untuk mengingat value mana aja yang udah muncul:
function hasDuplicate(nums) {
const seen = {};
for (let num of nums) {
if (seen[num]) return true;
seen[num] = true;
}
return false;
}
Kapan struktur lain lebih cocok
Saya menghindari hash map kalau butuh key yang terurut atau range query. Pemakaian memorinya juga bisa jadi batasan. Tree atau struktur terurut lainnya bisa menjawab query semacam itu dengan lebih langsung.
Kalau sebuah soal nanya "have I seen this?" atau "how many times?", saya cek apakah hash map bisa menyimpan state itu. Struktur data ini biasanya pakai space O(n) untuk n key yang tersimpan, jadi keuntungan lookup-nya punya biaya memori yang jelas.
Hash map ngasih lookup rata-rata yang cepat, bikin penghitungan frekuensi jadi gampang, dan mencatat hubungan tanpa pencarian bersarang. Pilihan yang tepat tergantung apakah soalnya butuh urutan, range query, atau pemakaian memori yang lebih rendah.

Memuat komentar...