LRU算法

作者: 吕建雄 | 来源:发表于2020-02-22 12:29 被阅读0次

设计和实现一个  LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。

获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。

写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。

进阶:

你是否可以在 O(1) 时间复杂度内完成这两种操作?

代码实现下载地址

核心思想:

通过HashMap结合双链表的方法实现,HashMap获取value可以达到O(1)的效率

核心算法:

/*添加Node*/

public void addNode(DLinkedList node){

    node.pre   = head;    //将添加node的pre指向头

    node.next = head.next;    //将添加node的next指向头的next

    head.next.pre = node;    //将原来头的next节点的pre节点指向node

    head.next = node;    //将头的next节点指向node

}

/*移除node,然后将node的pre与next节点进行关联*/

public void removeNode(DLinkedList node){

    DLinkedList pre = node.pre;    //获取node的pre节点

    DLinkedList next = node.next;    //获取node的next节点

    pre.next = next;    //pre节点的next节点指向next节点

    next.pre = pre;    //next节点的pre节点指向pre节点

}

/*将新增节点移到头部*/

public void moveToHead(DLinkedlist node){

    this.removeNode(node);    //先删除节点在原始链表中的位置

    this.addNode(node);    //添加节点到头

}

/*删除尾部节点*/

public DLinkedList popTail(){

    DLinkedList pre = this.tail.pre;

    this.removeNode(pre);

    return pre;

}

相关文章

  • Algorithm进阶计划 -- LRU 与 LFU 算法

    LRU 与 LFU 算法LRU 算法LFU 算法 1. LRU 算法 LRU 算法是一种缓存淘汰策略,是 Leas...

  • 缓存淘汰算法--LRU算法

    缓存淘汰算法--LRU算法 1. LRU 1.1 原理 LRU(Least recently used,)算法根据...

  • 缓存相关

    cache淘汰算法:LIRS 算法 缓存那些事 Redis缓存淘汰算法,LRU算法,LRU算法讲解

  • LRU Cache理解

    LRU Cache 1. 概念解析,LRU Cache算法 Lru Cache算法就是Least Recently...

  • 缓存 -- LRU算法

    什么是LRU算法 LRU算法的全称Least Recently Used。即最近最少使用。LRU算法是内存管理的一...

  • 高级算法

    请你讲讲LRU算法的实现原理? 考察点:LRU算法参考回答: ①LRU(Least recently used,最...

  • python内置缓存lru_cache

    lru_cache LRU算法原理 LRU (Least Recently Used,最近最少使用) 算法是一种缓...

  • LruCache原理和源码分析(一)

    一、Lru算法 Lru算法:最近最少使用算法; 算法的核心关键类是LinkedHashMap。 基本算法:将key...

  • Java LinkedHashMap 和 LRU算法

    问题:使用Java完成一个简单的LRU算法 什么是LRU算法 LRU(Least Recently Used),也...

  • LRU 算法实现

    LRU 算法实现 什么是 LRU 算法 LRU是什么?按照英文的直接原义就是Least Recently Used...

网友评论

      本文标题:LRU算法

      本文链接:https://www.haomeiwen.com/subject/mzhlqhtx.html