题解 | #LRU缓存#

设计LRU缓存结构

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

我们假定加入使无重复的:设计一个哈希表存放key与value;一个列表存放key

加入的时候判断内存是否溢出
get的时候判断dict.keys()

class Solution:
    def LRU(self , operators , k ):
        A,a=dict(),[]
        def set(key,value):
            if len(a)<k: 
                A[key]=value 
                a.append(key) 
            else: 
                del A[a.pop(0)] 
                A[key]=value
                a.append(key) 

        def get(key):
            if key in A.keys(): 
                a.remove(key)
                a.append(key)
                return A[key] 
            else: return -1 

        sol=[]
        for i in operators:
            if i[0]==1: set(i[1],i[2])
            else: 
                sol.append(get(i[1]))
        return sol
        # write code here
全部评论
get方法里面remove是O(n)
点赞 回复 分享
发布于 2022-02-02 00:28
敬佩,太优秀了。
点赞 回复 分享
发布于 2021-10-17 00:04

相关推荐

11-25 09:41
已编辑
Java
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
投了多少份简历才上岸
点赞 评论 收藏
分享
12-26 14:44
复旦大学 Java
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务