150 najlepszych wywiadówŁatwe

Pamięć podręczna LRU

Szczegółowy przewodnik i implementacja Python dla problemu „LRU Cache”.

Oświadczenie o problemie

Łatwe

Zaprojektuj strukturę danych zgodną z ograniczeniami pamięci podręcznej LRU (Least Ostatnio Używanej).

Zaimplementuj klasę LRUCache:

- LRUCache(capacity: int) - Zainicjuj pamięć podręczną LRU o dodatniej pojemności.

- get(key: int) -> int - Zwraca wartość klucza, jeśli klucz istnieje, w przeciwnym razie zwraca -1.

- put(key: int, value: int) -> None - Zaktualizuj wartość klucza, jeśli klucz istnieje. W przeciwnym razie dodaj parę klucz-wartość do pamięci podręcznej. Jeśli liczba kluczy przekracza pojemność, usuń ostatnio używany klucz.

Funkcje get i put muszą działać ze średnią złożonością czasową O(1).

Dane wejściowe to lista operacji i lista argumentów. Zaimplementuj funkcję lruCache(operations: list, arguments: list) -> list, która zwraca listę wyników (Brak dla konstruktora i put).

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

Przykłady

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?
Rozważ użycie struktur danych specyficznych dla listy połączonej, takich jak zestawy lub sterty.
Edge Cases to Watch
  • Puste struktury wejściowe
  • Wejścia jednoelementowe
  • Duże granice liczbowe

Gotowy do rozwiązania?

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

Otwórz w Edytorze
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

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.