Реализуйте функцию, которая принимает ёмкость кеша и список операций, и возвращает результаты всех 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]
- 1 ≤ capacity ≤ 3000
- 0 ≤ key ≤ 10⁴
- 0 ≤ value ≤ 10⁵
capacity = 2operations = [["put",1,1],["put",2,2],["get",1],["put",3,3],["get",2],["put",4,4],["get",1]][1,-1,-1]capacity = 1operations = [["put",1,10],["get",1],["put",2,20],["get",1],["get",2]][10,-1,20]capacity = 2operations = [["put",1,1],["put",1,2],["get",1],["get",2]][2,-1]