python解法:
可以采用队列的形式:构建一个哈希表,一个暂存数组表示队列
对set:如果缓存未满:将元素加入字典,同时将其加入数组。如果缓存已满,删除队列头部对应的字典,然后将队列头部(最不常用元素)删除然后将新元素添至队列末尾。
对get:直接读取然后按照一样的方法更新缓存
class Solution:
def LRU(self , operators , k ):
A,tmp,B=dict(),[],[]
def set1(key,value,k):
if len(A)<k:
A[key]=value
tmp.append(key)
else:
del A[tmp.pop(0)]
A[key]=value
tmp.append(key)
def get1(key):
if key in A.keys():
tmp.remove(key)
tmp.append(key)
return A[key]
else:
return -1
for i in operators:
if i[0]==1:
set1(i[1],i[2],k)
else:
B.append(get1(i[1]))
return B # write code here
京公网安备 11010502036488号