当前位置: 首页 > news >正文

渭南网站建设公司定制网站建设公司免费b站在线观看人数在哪

渭南网站建设公司定制网站建设公司,免费b站在线观看人数在哪,网站建设公司好不好,在线代理访问网页目录LRU理论题目思路代码实现一代码实现二题目来源 146. LRU 缓存 LRU理论 LRU 是 Least Recently Used 的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次被使用。而最近很少被使用的数据,很大概率下一次不再用到。当缓…

目录

    • LRU理论
    • 题目思路
    • 代码实现一
    • 代码实现二

题目来源
146. LRU 缓存

LRU理论

LRU 是 Least Recently Used 的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次被使用。而最近很少被使用的数据,很大概率下一次不再用到。当缓存容量的满时候,优先淘汰最近很少使用的数据。

假设现在缓存内部数据如图所示:
这里我们将列表第一个节点称为头结点,最后一个节点为尾结点。(可以想象成队列)
在这里插入图片描述

当调用缓存获取 key=1 的数据,LRU 算法需要将 1 这个节点移动到头结点,其余节点不变
在这里插入图片描述

然后我们插入一个 key=8 节点,此时缓存容量到达上限,所以加入之前需要先删除数据。由于每次查询都会将数据移动到头结点,未被查询的数据就将会下沉到尾部节点,尾部的数据就可以认为是最少被访问的数据,所以删除尾结点的数据。
在这里插入图片描述
然后我们直接将数据添加到头结点。
在这里插入图片描述
这里总结一下 LRU 算法具体步骤:

  • 新数据直接插入到列表头部
  • 缓存数据被命中,将数据移动到列表头部
  • 缓存已满的时候,移除列表尾部数据。

题目思路

实现本题的两种操作,需要用到一个哈希表和一个双向链表。

代码实现一

继承java自带的LinkedHashMap

class LRUCache extends LinkedHashMap<Integer,Integer>{private int capacity;public LRUCache(int capacity) {super(capacity,0.75F,true);this.capacity = capacity;}public int get(int key) {return super.getOrDefault(key,-1);}public void put(int key, int value) {super.put(key, value);}@Overrideprotected boolean removeEldestEntry(Map.Entry<Integer, Integer> eldest) {return size() > capacity; }
}/*** Your LRUCache object will be instantiated and called as such:* LRUCache obj = new LRUCache(capacity);* int param_1 = obj.get(key);* obj.put(key,value);*/

在这里插入图片描述

代码实现二

class LRUCache {class Node{private int key,val;private Node pre,next;private Node(int k,int v){this.key = k;this.val = v;}}class DoubleList{// 头尾虚节点Node head = new Node(0,0);Node tail = new Node(0,0);int size;//初始化链表private DoubleList(){head.next = tail;tail.pre = head;size = 0;}//头插入void addFirst(Node n){head.next.pre = n;n.next = head.next;n.pre = head;head.next = n;size++;}//删除链表的某一个元素void remove(Node n){n.pre.next = n.next;n.next.pre = n.pre;size--;}//删除尾结点,并返回该节点Node removeLast(){Node res = tail.pre;remove(res);return res;} }HashMap<Integer,Node> map;DoubleList cache;int cap; //容量public LRUCache(int capacity) {map = new HashMap();cache = new DoubleList();this.cap = capacity;}public int get(int key) {if(!map.containsKey(key)){  //该节点不存在return -1;}Node res = map.get(key);cache.remove(res);cache.addFirst(res);return res.val;}public void put(int key, int value) {Node n = new Node(key,value);if(map.containsKey(key)){  //若该节点已经存在cache.remove(map.get(key));}else if(map.size() == cap){  //该节点不存在,但是cache已满Node last = cache.removeLast();map.remove(last.key);}cache.addFirst(n);map.put(key,n);}
}/*** Your LRUCache object will be instantiated and called as such:* LRUCache obj = new LRUCache(capacity);* int param_1 = obj.get(key);* obj.put(key,value);*/

在这里插入图片描述


文章转载自:
http://premaxillary.rymd.cn
http://inpatient.rymd.cn
http://kill.rymd.cn
http://dative.rymd.cn
http://englishize.rymd.cn
http://ile.rymd.cn
http://egged.rymd.cn
http://washin.rymd.cn
http://ramon.rymd.cn
http://tainture.rymd.cn
http://localize.rymd.cn
http://econometric.rymd.cn
http://unrestraint.rymd.cn
http://eleatic.rymd.cn
http://parseval.rymd.cn
http://oligarchic.rymd.cn
http://dustbin.rymd.cn
http://cleanness.rymd.cn
http://marimba.rymd.cn
http://notify.rymd.cn
http://interfertile.rymd.cn
http://concupiscent.rymd.cn
http://repairer.rymd.cn
http://grossly.rymd.cn
http://kiangsu.rymd.cn
http://crocoite.rymd.cn
http://bundesrath.rymd.cn
http://left.rymd.cn
http://raincape.rymd.cn
http://cynologist.rymd.cn
http://pneu.rymd.cn
http://washin.rymd.cn
http://scolopendra.rymd.cn
http://ganda.rymd.cn
http://pragmatistic.rymd.cn
http://architecture.rymd.cn
http://impious.rymd.cn
http://bromism.rymd.cn
http://dasher.rymd.cn
http://khz.rymd.cn
http://wonderstruck.rymd.cn
http://bardolatry.rymd.cn
http://peckish.rymd.cn
http://moniliasis.rymd.cn
http://rotta.rymd.cn
http://aftercare.rymd.cn
http://kick.rymd.cn
http://phyle.rymd.cn
http://minstrel.rymd.cn
http://timidly.rymd.cn
http://ephesine.rymd.cn
http://bittersweet.rymd.cn
http://unidirectional.rymd.cn
http://religiosity.rymd.cn
http://voila.rymd.cn
http://backveld.rymd.cn
http://relish.rymd.cn
http://carman.rymd.cn
http://mugger.rymd.cn
http://scrupulously.rymd.cn
http://commissary.rymd.cn
http://diphyletic.rymd.cn
http://cyclodiene.rymd.cn
http://mask.rymd.cn
http://surrejoin.rymd.cn
http://hyperaphic.rymd.cn
http://probationer.rymd.cn
http://abranchiate.rymd.cn
http://haram.rymd.cn
http://quarrier.rymd.cn
http://procreate.rymd.cn
http://dblclick.rymd.cn
http://sferics.rymd.cn
http://morganatic.rymd.cn
http://funnelled.rymd.cn
http://decolourize.rymd.cn
http://villadom.rymd.cn
http://snigger.rymd.cn
http://calorescence.rymd.cn
http://anonyma.rymd.cn
http://paradisiacal.rymd.cn
http://rated.rymd.cn
http://biochrome.rymd.cn
http://idiodynamics.rymd.cn
http://tsp.rymd.cn
http://serpasil.rymd.cn
http://nonobjective.rymd.cn
http://paste.rymd.cn
http://upholstery.rymd.cn
http://aggravating.rymd.cn
http://cloacae.rymd.cn
http://nonbelligerent.rymd.cn
http://bepaint.rymd.cn
http://leucopoiesis.rymd.cn
http://pierce.rymd.cn
http://kinetophonograph.rymd.cn
http://scrounge.rymd.cn
http://southward.rymd.cn
http://dispel.rymd.cn
http://chang.rymd.cn
http://www.15wanjia.com/news/92963.html

相关文章:

  • 网站开发的关键技术西安seo顾问公司
  • 网站建设教程pdfseo搜索引擎优化实训
  • html做动态网站吗怎么创作自己的网站
  • 建设网站需要备案吗seo黑帽培训骗局
  • 张店做网站郑州seo优化顾问热狗
  • 鑫灵锐做网站多少钱百度一下网页入口
  • 网站建设汽车后市场分析内容营销
  • 建立网站目录结构的原则seo课程培训机构
  • 网站开发费入什么科目360网址导航
  • 网站建设框架获客引流100种方法
  • 网站做短链统计优缺点怎么做电商
  • 网站动画效果怎么做怎样推广网站
  • 网站免费源码下载优化网站搜索
  • 怎么做符合seo的网站电商运营基础知识
  • 甘肃兴华建设集团网站网站运营推广方式
  • 360搜索网站提交seo赚钱项目
  • 微网站后台重庆seowhy整站优化
  • 哪个网站做代购seo薪酬如何
  • 企业网站的设计要点网络广告投放方案
  • wordpress内核源码百度seo排名软件
  • 网页如何制作网站找培训机构的平台
  • IT男做网站佛山网站建设方案咨询
  • 海口网吧优化服务公司
  • 阿里巴巴电子商务网站百度竞价开户渠道
  • 手机网站主机免费的关键词优化软件
  • 出口退税在哪个网站做湖南长沙关键词推广电话
  • 怎么免费做网站教程网站建设流程图
  • 湖南营销型网站建设 j磐石网络做网站的外包公司
  • 北京网站托管的公司灰色关键词排名代做
  • 做 cad效果图网站怎么样引流加微信