146. LRU Cache 快取作法
2022 年 5 月 21 日
![](https://i0.wp.com/lazyinwork.com/wp-content/uploads/2022/05/image-28.png?resize=678%2C540&ssl=1)
這邊題目要我們做快取伺服器。在超過容量的時候,要刪除最久未使用的內容,並且都要保持複雜度為O(1)。
class LRUCache:
def __init__(self, capacity: int):
self.return1={}
self.capacity=capacity
def get(self, key: int) -> int:
if key in self.return1:
get = self.return1[key]
del self.return1[key]
self.return1[key]=get
return get
return -1
def put(self, key: int, value: int) -> None:
if key in self.return1:
del self.return1[key]
self.return1[key]=value
else:
if len(self.return1)<self.capacity:
self.return1[key]=value
else:
print(self.return1)
print(iter(self.return1))
print(next(iter(self.return1)))
print("-")
del self.return1[next(iter(self.return1))]
self.return1[key]=value
上面是最核心的概念,特別的部分我們可以看到在下面更新(put)的地方。
del self.return1[next(iter(self.return1))]
解釋一下用到的兩個方法
iter(): 把可迭代物件轉換為迭代器
next(): 丟出一個