题解 | #设计LRU缓存结构#
设计LRU缓存结构
http://www.nowcoder.com/practice/e3769a5f49894d49b871c09cadd13a61
因为字典是无序的,用列表去保存set、get操作的顺序
class Solution:
def LRU(self , operators: List[List[int]], k: int) -> List[int]:
# write code here
opt_dict, opt_list = {}, []
def set(key, val):
if len(opt_list) < k:
opt_dict[key] = val
opt_list.append(key)
else:
del opt_dict[opt_list.pop(0)]
opt_dict[key] = val
opt_list.append(key)
def get(key):
if key in opt_dict.keys():
opt_list.remove(key)
opt_list.append(key)
return opt_dict[key]
else:
return -1
sol = []
for l in operators:
if l[0] == 1: set(l[1], l[2])
else:
sol.append(get(l[1]))
return sol