题解 | #设计LRU缓存结构#

设计LRU缓存结构

http://www.nowcoder.com/practice/e3769a5f49894d49b871c09cadd13a61

#
# lru design
# @param operators int整型二维数组 the ops
# @param k int整型 the k
# @return int整型一维数组
#
class Solution:
    def LRU(self , operators , k ):
        # write code here
        lru = {} # 利用字典作为双向队列,左侧作为最不常用的,右侧作为最常用的
        l_return = []
        for opt in operators:
            if opt[0] == 1 :
                if len(lru) == k:#当满的时候,删除最不常用的
                    key = list(lru.keys())[0]
                    lru.pop(key)
                #若没满,则添加当前元素
                key = opt[1]
                value = opt[2]
                lru[key] = value
            if opt[0] == 2:
                key = opt[1]
                if key in lru:
                    value = lru[key]
                    l_return.append(value)
                    # 更新顺序
                    lru.pop(key) # 删除
                    lru[key] = value #移动到最右端
                else:
                    l_return.append(-1)
        return l_return
全部评论

相关推荐

贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务