LRU Cache in time for all operations
from collections import OrderedDict
class LRUCache:
def __init__(self, capacity: int):
self.max_size = capacity
self.items = OrderedDict()
def get(self, key: int) -> int:
if key in self.items:
self.items.move_to_end(key)
return self.items.get(key, -1)
def put(self, key: int, value: int) -> None:
if key in self.items:
del self.items[key]
if len(self.items) == self.max_size:
self.items.popitem(last=False)
self.items[key] = value