File size: 621 Bytes
03a907a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from collections import OrderedDict


class LRUCache:
    def __init__(self, capacity: int):
        self.capacity = capacity
        self.store: OrderedDict[str, int] = OrderedDict()

    def get(self, key: str) -> int:
        if key not in self.store:
            return -1
        # BUG: does not refresh recency when key is accessed.
        return self.store[key]

    def put(self, key: str, value: int) -> None:
        if key in self.store:
            self.store.pop(key)
        self.store[key] = value
        if len(self.store) > self.capacity:
            self.store.popitem(last=False)