zoukankan      html  css  js  c++  java
  • leetcode LRU cache

    题目:

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.

    get(key) - Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1.
    set(key, value) - Set or insert the value if the key is not already present. When the cache reached its capacity, it should invalidate the least recently used item before inserting a new item.

     就是设计一个数据结构,模拟缓存的操作。

    一开始想到使用队列,但是TLE。

    后来考虑到每次淘汰cache时,我只需要知道最旧的那个cache,而不需要知道具体的cache的排序,想到

    一个数据结构,堆。设置一个index,表示cache插入的顺序。维持一个index作为特征值的堆。

    在具体实现时,用一个HashMap存储key和该堆中节点的对应关系。这样,每次

    淘汰时,只需将堆头淘汰掉,然后将新的cache放入堆中,再调整堆满足条件。而hashMap中存储的是key和堆的节点的对应关系。

    这个方法AC了。

    稍微查了一下,有个更好的办法,即依然使用队列实现,但是队列用链表实现。

    然而用一个HashMap表征key和队列中节点的对应关系,这样可以保证快速找到队列中的节点。

     
     
  • 相关阅读:
    跨域请求携带cookie
    vue keep-alive
    关于js replace 第二个参数时函数时,函数参数解析
    前端开发规范之CSS
    git命令集合(正在完善中...)
    怎么写jQuery的插件
    git命令集合
    GitHub创建静态网站预览方法
    正则表达式
    各种浏览器全屏模式的方法、属性和事件介绍
  • 原文地址:https://www.cnblogs.com/elnino/p/5607783.html
Copyright © 2011-2022 走看看