题目:设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get
和 写入数据 put
。
class LRUCache(object): def __init__(self,capacity): self.dic = {} self.remain = capacity def get(self,key): if key not in self.dic: return -1 value = self.dic.pop(key) self.dic[key] = value return value 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.pop(list(dic)[0]) self.dic[key] = value
注:
使用字典加一个缓存容量来实现。取值时,先判断缓存中有没有该值,若没有直接返回-1;若有,返回,此时需要更新该值的位置为最新,巧妙的方式是先弹出该值,再读入该值。
存值时先判断该值在不在缓存,此处也要进行值的更新。如果不存在,在判断缓存还有没容量,有容量的话,直接减1;没有的话弹出最早的元素。最后在存入值。