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