编写代码实现LRU算法 ?
参考答案:
LRU(Least Recently Used)算法是一种常用的缓存淘汰策略,它选择最近最少使用的数据进行淘汰。以下是一个用Python实现的简单LRU缓存的例子:
class LRUCache:
def __init__(self, capacity: int):
self.cache = collections.OrderedDict()
self.capacity = capacity
def get(self, key: int) -> int:
if key not in self.cache:
return -1
else:
self.cache.move_to_end(key) # 将数据移到队尾,表示最近使用过
return self.cache[key]
def put(self, key: int, value: int) -> None:
if key in self.cache:
self.cache.move_to_end(key) # 更新数据的位置到队尾
self.cache[key] = value
if len(self.cache) > self.capacity:
self.cache.popitem(last=False) # 弹出队首元素,即最久未使用的数据
这个实现中,我们使用了一个OrderedDict
来存储缓存数据,它保持了键值对的插入顺序。当我们访问一个已经存在的键时,我们将其移到队尾,表示最近被使用过。当我们插入一个新的键值对时,如果缓存已满,我们就弹出队首的元素,即最久未使用的数据。这样,我们就实现了LRU缓存淘汰策略。