/
erddrsf
/
Pyhse
Обзор
Документация
Войти
/
erddrsf
/
Pyhse
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
lru_cache.py
59 строк
2 KB
erddrsf
Примеры моего кода
01 май 2026, 23:35
Верифицирован
01 май 2026, 23:35
b05b859
Код
Авторство
О чём код?
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): 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 _remove(self, node): prev_node = node.prev next_node = node.next prev_node.next = next_node next_node.prev = prev_node def _add(self, node): last = self.tail.prev last.next = node node.prev = last node.next = self.tail self.tail.prev = node def get(self, key): if key in self.cache: node = self.cache[key] self._remove(node) self._add(node) return node.value else: return -1 def put(self, key, value): if key in self.cache: node = self.cache[key] node.value = value self._remove(node) self._add(node) else: if len(self.cache) >= self.capacity: lru = self.head.next self._remove(lru) del self.cache[lru.key] node = Node(key, value) self.cache[key] = node self._add(node) def print_cache(self): print("Текущее состояние кэша:") node = self.head.next while node != self.tail: print(f"{node.key}: {node.value}") node = node.next