/
ariadna
/
AlgoritmStructure_Ari
Обзор
Документация
Войти
/
ariadna
/
AlgoritmStructure_Ari
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
patch
Lru_Cache
48 строк
1 KB
ariadna
update Lru_Cache
29 мар 2025, 21:50
29 мар 2025, 21:50
faa4bcd
Код
Авторство
О чём код?
class Node: def __init__(self, key, value): self.key = key self.value = value self.prev = None self.next = None class LRUCache: def __init__(self, capacity: int): self.capacity = capacity self.cache = {} self.head = Node(0, 0) self.tail = Node(0, 0) self.head.next = self.tail self.tail.prev = self.head def get(self, key: int) -> int: if key in self.cache: node = self.cache[key] self._remove(node) self._add(node) return node.value return -1 def put(self, key: int, value: int) -> None: if key in self.cache: self._remove(self.cache[key]) new_node = Node(key, value) self._add(new_node) self.cache[key] = new_node if len(self.cache) > self.capacity: lru_node = self.tail.prev self._remove(lru_node) del self.cache[lru_node.key] def _remove(self, node: Node) -> None: p = node.prev n = node.next p.next =n n.prev =p def _add(self, node: Node) -> None: node.prev = self.head node.next = self.head.next self.head.next.prev = node self.head.next = node