题解 | #设计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