zoukankan      html  css  js  c++  java
  • 146-LRUCache

    题目:设计和实现一个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;没有的话弹出最早的元素。最后在存入值。

  • 相关阅读:
    GCC编译错误小结
    Sword libcurl使用
    Python 包
    Python __all__系统变量
    Python 模块导入
    Python 异常处理
    Python 单例模式
    乐乐课堂_leleketang.com
    靠刷题考进了清华?学霸告诉你答案
    python logging配置时间或大小轮转
  • 原文地址:https://www.cnblogs.com/kingshine007/p/11397001.html
Copyright © 2011-2022 走看看