get ve put işlemleri O(1) olan bir LRU Cache tasarlayın.

Cevap

Klasik çözüm hash map + çift yönlü bağlı listedir. JavaScript'te Map ekleme sırasını koruduğu için tek başına yeterlidir: erişilen anahtarı silip yeniden ekleyerek en sona taşırız, kapasite aşılınca ilk anahtarı sileriz.

class LRUCache {
  constructor(kapasite) {
    this.k = kapasite;
    this.m = new Map();
  }
  get(key) {
    if (!this.m.has(key)) return -1;
    const v = this.m.get(key);
    this.m.delete(key);
    this.m.set(key, v);
    return v;
  }
  put(key, v) {
    this.m.delete(key);
    this.m.set(key, v);
    if (this.m.size > this.k) this.m.delete(this.m.keys().next().value);
  }
}
  1. Binary search'ün zaman karmaşıklığı nedir ve neden?KolayAlgoritmalar & Veri YapılarıYazılım Müh.
  2. Two Sum: toplamı hedefe eşit olan iki elemanın indekslerini bulun.KolayAlgoritmalar & Veri YapılarıYazılım Müh.
  3. Bir parantez dizisinin geçerli olup olmadığını kontrol edin: "({[]})"KolayAlgoritmalar & Veri YapılarıYazılım Müh.
  4. Tek yönlü bağlı listeyi ters çevirin.OrtaAlgoritmalar & Veri YapılarıYazılım Müh.
  5. BFS ve DFS arasındaki fark nedir? Hangisini ne zaman kullanırsınız?OrtaAlgoritmalar & Veri YapılarıYazılım Müh.

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle