En İyi 150 RöportajKolay

LRU Önbelleği

'LRU Önbellek' sorunu için ayrıntılı kılavuz ve Python uygulaması.

Sorun Bildirimi

Kolay

En Son Kullanılan (LRU) önbelleğin kısıtlamalarını takip eden bir veri yapısı tasarlayın.

LRUCache sınıfını uygulayın:

- LRUCache(capacity: int) - LRU önbelleğini pozitif boyut kapasitesiyle başlatın.

- get(key: int) -> int - Anahtar varsa anahtarın değerini döndürür, yoksa -1 değerini döndürür.

- put(key: int, value: int) -> Yok - Anahtar mevcutsa anahtarın değerini güncelleyin. Aksi takdirde anahtar/değer çiftini önbelleğe ekleyin. Anahtar sayısı kapasiteyi aşarsa, en son kullanılan anahtarı çıkarın.

Get ve put işlevlerinin her biri O(1) ortalama zaman karmaşıklığında çalışmalıdır.

Giriş, işlemlerin bir listesi ve argümanların bir listesidir. Sonuçların bir listesini döndüren lruCache(operations: list, arguments: list) -> list işlevini uygulayın (Yapıcı ve put için Yok).

Kısıtlamalar
  • 1 <= capacity <= 3000
  • 0 <= key <= 10000
  • 0 <= value <= 100000
  • At most 200000 calls will be made to get and put

Örnekler

Example 1
Input
["LRUCache","put","put","get","put","get","put","get","get","get"], [[2],[1,1],[2,2],[1],[3,3],[2],[4,4],[1],[3],[4]]
Output
[None,None,None,1,None,-1,None,-1,3,4]
Explanation

Cache capacity is 2. put(1,1), put(2,2), get(1) returns 1. put(3,3) evicts key 2. get(2) returns -1 (evicted). put(4,4) evicts key 1. get(1) returns -1, get(3) returns 3, get(4) returns 4.

Need a Hint?
Kümeler veya yığınlar gibi Bağlantılı Listeye özgü veri yapılarını kullanmayı düşünün.
Edge Cases to Watch
  • Boş giriş yapıları
  • Tek eleman girişleri
  • Büyük sayısal sınırlar

Çözmeye Hazır mısınız?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Editörde Aç
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.