LRU(最近最少使用)算法原理及PHP实现( 二 )
HashMap+双向链表
基于 HashMap 和 双向链表实现 LRU的整体的设计思路是,可以使用 HashMap 存储 key,这样可以做到 save 和 get key的时间都是 O(1),而 HashMap 的 Value 指向双向链表实现的 LRU 的 Node 节点,如图所示:
LRU 存储是基于双向链表实现的,下面的图演示了它的原理。其中 head 代表双向链表的表头,tail 代表尾部。首先预先设置 LRU 的容量,如果存储满了,可以通过 O(1) 的时间淘汰掉双向链表的尾部,每次新增和访问数据,都可以通过 O(1)的效率把新的节点增加到对头,或者把已经存在的节点移动到队头。
代码实现
// 双项链表
function DLinkedNode(key, data) {
this.key = key;
this.data = http://www.veick.cn/news/data;
推荐阅读
- 美颜|斗鱼一姐阿冷最近消息 直播不小心关了美颜秒变“照骗”
- edg战队|EDG夺冠选手能分多少钱?3重奖励曝光奖金最少1500万,刷新3项记录被央视点名!
- 剑齿虎|CF:没属性的剑齿虎不够过瘾?永久的剑齿虎-X来了
- vr游戏|PS+11月会免游戏公布,会免游戏持续不行,最近操作有点迷
- 中单|为何果子哥最近舆论变好?网友调侃:三大混子,他是最强的那个
- 勇者斗恶龙10离线版|为何果子哥最近舆论变好?网友调侃:三大混子,他是最强的那个
- RNG|一招让你记住英雄联盟的英雄名字名字
- 曹志顺|王者荣耀久诚直播透露,最近都有空五排上分,暗示AG首发无了?
- 阴阳师|阴阳师:分享一个自己最近使用的道馆阵容
- 梦幻西游|梦幻西游:距离千亿最近的109级角色,代练再刷两年就能领神马了