Latihan 1 dari materi LRU Cache di Struktur Data — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi method get dan put di class LRUCache. Constructor-nya sudah menyiapkan this.capacity dan this.map (sebuah Map).
get(key): kalau key-nya ada, kembalikan value-nya dan jadikan key itu yang paling baru dipakai. Kalau gak ada, kembalikan -1.
put(key, value): simpan value-nya dan jadikan key itu yang paling baru dipakai. Kalau key-nya sudah ada, cukup perbarui value-nya (ini juga dihitung memakai). Kalau key-nya baru dan cache sudah penuh, buang dulu key yang paling lama gak dipakai.
Kode di bawah starter mencetak empat baris, urut: A, -1, C, -1.
Class-nya juga dites dengan urutan put dan get lain, jadi jangan menulis hasilnya langsung.
Hint
Map mengingat urutan masuk. Kalau tiap key yang dipakai kamu pindahkan ke paling belakang, key paling depan selalu yang paling lama gak dipakai.
Untuk memindah key ke paling belakang: this.map.delete(key) lalu this.map.set(key, value). Key paling depan didapat dari this.map.keys().next().value.
get: if (!this.map.has(key)) return -1; ambil value-nya, delete, set lagi, lalu return value. put: if (this.map.has(key)) this.map.delete(key); else if (this.map.size === this.capacity) this.map.delete(this.map.keys().next().value); lalu this.map.set(key, value);
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...