LRU Cache

MediumAlgo
15:00
Лучше работает на десктопе
DesignHash MapLinked Lists

Реализуйте функцию, которая принимает ёмкость кеша и список операций, и возвращает результаты всех get операций.

Операции:
- ["get", key] — вернуть значение по ключу (или -1 если нет)
- ["put", key, value] — добавить/обновить пару (если кеш полон — удалить наименее недавно использованный элемент)

Обе операции должны работать за O(1).

Сигнатура

def lru_cache(capacity: int, operations: list[list]) -> list[int]:

Примеры

lru_cache(2, [["put",1,1],["put",2,2],["get",1],["put",3,3],["get",2],["put",4,4],["get",1]])
→ [1, -1, -1]

Constraints

- 1 ≤ capacity ≤ 3000
- 0 ≤ key ≤ 10⁴
- 0 ≤ value ≤ 10⁵

Примеры

Пример 1

Вход:
capacity = 2
operations = [["put",1,1],["put",2,2],["get",1],["put",3,3],["get",2],["put",4,4],["get",1]]
Выход:[1,-1,-1]

Пример 2

Вход:
capacity = 1
operations = [["put",1,10],["get",1],["put",2,20],["get",1],["get",2]]
Выход:[10,-1,20]

Пример 3

Вход:
capacity = 2
operations = [["put",1,1],["put",1,2],["get",1],["get",2]]
Выход:[2,-1]
Консоль
Нажмите Run или Ctrl+Enter для запуска