題目來源於力扣
理論基礎
LRU演算法、Cache
實現LRU Cache快取機制
題目描述
設計和實現一個LRU Cache快取機制
解題思路
- least recently used 最近最少使用(被淘汰)
- Double LinkedList (雙向連結串列)
- O(1) 查詢頭部
- O(1) 修改、更新
- 實現讀、寫快取的操作
Python 解法
class LRUCache(object):
def __init__(self, capacity):
self.dic = collection.OrderedDict()
self.remain = capacity
def get(self, key):
if key not in self.dic:
return -1
v = self.dic.pop(key)
self.dic[key] = v # 把當前訪問的key設定為最新
return v
def put(self, key, value):
if key in self.dic:
self.dic.pop(key)
else:
if self.remain > 0:
self.remain -= 1
else: # 如果容量已滿
self.dic.popitem(last=False) # 刪除最後一個鍵值對
self.dic[key] = value