带你读《图解算法小抄》九、LRU(3)

简介: 带你读《图解算法小抄》九、LRU(3)

带你读《图解算法小抄》九、LRU(2)https://developer.aliyun.com/article/1348200?groupCode=tech_library

class LRUCache {
  constructor(capacity) {
    this.capacity = capacity;
    this.cache = new Map();
    this.keySet = new Set();
  }
  get(key) {
    if (this.cache.has(key)) {
      const value = this.cache.get(key);
      // 更新访问顺序
      this.keySet.delete(key);
      this.keySet.add(key);
      return value;
    }
    return -1;
  }
  put(key, value) {
    if (this.cache.has(key)) {
      // 更新已存在的键值对
      this.cache.set(key, value);
      // 更新访问顺序
      this.keySet.delete(key);
      this.keySet.add(key);
    } else {
      // 插入新的键值对
      if (this.cache.size === this.capacity) {
        // 达到容量上限,移除最久未使用的键值对
        const oldestKey = this.keySet.values().next().value;
        this.cache.delete(oldestKey);
        this.keySet.delete(oldestKey);
      }
      // 添加新的键值对
      this.cache.set(key, value);
      this.keySet.add(key);
    }
  }}

3. 复杂度

 

平均

空间

O(n)

获取项

O(1)

设置项

O(1)

4. 参考资料

LeetCode上的LRU Cache

InterviewCake上的LRU Cache

维基百科上的LRU Cache

 

 


相关文章
|
算法
操作系统LRU算法(最近最少使用算法)
操作系统LRU算法(最近最少使用算法)
106 0
|
算法 NoSQL Java
Apache Zeppelin系列教程第八篇——LRU算法在Apache Zeppelin中的应用
Apache Zeppelin系列教程第八篇——LRU算法在Apache Zeppelin中的应用
122 0
|
4月前
|
人工智能 算法 NoSQL
LRU算法的Java实现
LRU(Least Recently Used)算法用于淘汰最近最少使用的数据,常应用于内存管理策略中。在Redis中,通过`maxmemory-policy`配置实现不同淘汰策略,如`allkeys-lru`和`volatile-lru`等,采用采样方式近似LRU以优化性能。Java中可通过`LinkedHashMap`轻松实现LRUCache,利用其`accessOrder`特性和`removeEldestEntry`方法完成缓存淘汰逻辑,代码简洁高效。
174 0
|
3月前
|
缓存 人工智能 算法
lru算法设计与实现
本文详细介绍了LRU(Least Recently Used,最近最少使用)缓存淘汰策略的原理与实现。LRU的核心思想是:越近被访问的数据,未来被再次访问的可能性越大。文章通过Java语言实现了一个支持O(1)时间复杂度操作的LRU缓存
106 0
|
缓存 算法 前端开发
深入理解缓存淘汰策略:LRU和LFU算法的解析与应用
【8月更文挑战第25天】在计算机科学领域,高效管理资源对于提升系统性能至关重要。内存缓存作为一种加速数据读取的有效方法,其管理策略直接影响整体性能。本文重点介绍两种常用的缓存淘汰算法:LRU(最近最少使用)和LFU(最不经常使用)。LRU算法依据数据最近是否被访问来进行淘汰决策;而LFU算法则根据数据的访问频率做出判断。这两种算法各有特点,适用于不同的应用场景。通过深入分析这两种算法的原理、实现方式及适用场景,本文旨在帮助开发者更好地理解缓存管理机制,从而在实际应用中作出更合理的选择,有效提升系统性能和用户体验。
616 1
|
缓存 监控 算法
如何调整InnoDB的LRU算法以提高效率?
【5月更文挑战第14天】如何调整InnoDB的LRU算法以提高效率?
162 2
|
缓存 算法 前端开发
前端 JS 经典:LRU 缓存算法
前端 JS 经典:LRU 缓存算法
184 0
|
存储 缓存 算法
面试遇到算法题:实现LRU缓存
V哥的这个实现的关键在于维护一个双向链表,它可以帮助我们快速地访问、更新和删除最近最少使用的节点,同时使用哈希表来提供快速的查找能力。这样,我们就可以在 O(1) 的时间复杂度内完成所有的缓存操作。哈哈干净利索,回答完毕。
148 1
|
存储 缓存 算法
LRU(Least Recently Used)算法原理
LRU(Least Recently Used)算法原理
486 0
|
缓存 算法 Java
如何实现缓存与LRU算法以及惰性过期
如何实现缓存与LRU算法以及惰性过期
155 1

热门文章

最新文章