LRU Cache
Problem page:https://leetcode.com/problems/lru-cache
Solution
class LRUCache:
_flag = ('data','capacity')
def __init__(self, capacity: int):
self.data: Dict[int,int] = OrderedDict()
self.capacity = capacity
def get(self, key: int) -> int:
return -1 if key not in self.data else self.data.setdefault(key, self.data.pop(key))
def put(self, key: int, value: int) -> None:
try:
self.data.move_to_end(key)
self.data[key] = value
except KeyError:
self.data[key] = value
if len(self.data) > self.capacity:
self.data.popitem(last=False)
Complexity
- time: O(1)
- space: O(n)