OrderedDict:有序写查删
Last updated
Last updated
class LRUCache:
def __init__(self, capacity: int):
self.capacity = capacity
self.hash = defaultdict(ListNode)
self.cache = DoubleLinkedList()
def get(self, key: int) -> int:
if key not in self.hash:
return -1
node = self.hash[key]
self.put(key, node.val)
return node.val
def put(self, key: int, value: int) -> None:
if key in self.hash:
self.cache.remove(self.hash[key])
else:
if len(self.hash)==self.capacity:
last = self.cache.removeLast()
del self.hash[last.key]
node = ListNode(key, value)
self.cache.insertFront(node)
self.hash[key] = nodeclass LRUCache:
def __init__(self, capacity: int):
self.capacity = capacity
self.hash = OrderedDict()
def get(self, key: int) -> int:
if key not in self.hash:
return -1
self.put(key, self.hash[key])
return self.hash[key]
def put(self, key: int, value: int) -> None:
if key in self.hash:
del self.hash[key]
self.hash[key] = value
if len(self.hash)>self.capacity:
self.hash.popitem(last=False)