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

京东电器商城网上购物潍坊seo建站

京东电器商城网上购物,潍坊seo建站,佛山建站平台,夫妻性做受视频什么网站思路源自 【面试高频】146. LRU 缓存 采用哈希表双向链表 put一个键值对时,采用头插法将缓存块置于等级较高的位置,如果put数量超出限制,那么就将尾部的缓存块删除,以此达到置换的一个效果 get一个键值对也是同样的思路&#xf…

思路源自

【面试高频】146. LRU 缓存

 采用哈希表+双向链表

put一个键值对时,采用头插法将缓存块置于等级较高的位置,如果put数量超出限制,那么就将尾部的缓存块删除,以此达到置换的一个效果

get一个键值对也是同样的思路,如果不命中直接返回-1,如果命中先删除缓存块再头插缓存块,这样就达到了访问后更新缓存块等级的目的

class LRUCache {class DoubleLinkedNode {DoubleLinkedNode pre;int key;int value;DoubleLinkedNode next;public DoubleLinkedNode() {key=-1;value=-1;}public DoubleLinkedNode(int key, int value) {this.key=key;this.value = value;}}private int size;private int capacity;private Map<Integer,DoubleLinkedNode> cache;DoubleLinkedNode head;DoubleLinkedNode tail;//初始化两个虚拟节点,头尾指针互指public LRUCache(int capacity) {this.size=0;this.capacity=capacity;this.cache = new HashMap<>();this.head = new DoubleLinkedNode();this.tail = new DoubleLinkedNode();head.pre=null;head.next=tail;tail.pre=head;tail.next = null;}//获取缓存中的值,如果命中要更新缓存public int get(int key) {if (cache.containsKey(key)) {DoubleLinkedNode doubleLinkedNode = cache.get(key);this.delete(doubleLinkedNode.key);this.add(doubleLinkedNode.key, doubleLinkedNode.value);return doubleLinkedNode.value;} else {return -1;}}//缓存添加或者置换public void put(int key, int value) {if (cache.containsKey(key)) {this.delete(key);this.add(key, value);} else {if (this.capacity == this.size) {this.delete(tail.pre.key);}this.add(key, value);}}//新增一个新的缓存,采用头插法private void add(int key, int value) {DoubleLinkedNode doubleLinkedNode = new DoubleLinkedNode(key, value);doubleLinkedNode.pre=this.head;doubleLinkedNode.next=this.head.next;this.head.next.pre=doubleLinkedNode;this.head.next=doubleLinkedNode;this.size++;cache.put(key, doubleLinkedNode);}//删除一个现有缓存private void delete(int key) {DoubleLinkedNode doubleLinkedNode = cache.get(key);doubleLinkedNode.pre.next=doubleLinkedNode.next;doubleLinkedNode.next.pre = doubleLinkedNode.pre;this.size--;cache.remove(key);}
}/*** 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://www.dtcms.com/wzjs/330477.html

相关文章:

  • 政府网站建设招标要求b站推广怎么买
  • 深圳市宝安网站建设雅思培训机构哪家好机构排名
  • 找国外客户的网站郑州专业seo哪家好
  • 查询网站怎么做的关键词在线播放免费
  • 静态网站建设参考文献个人免费建站软件
  • 手机网站建设培训seo图片优化
  • 企业网站代运营评论优化
  • wordpress+教材主题seo的优化策略有哪些
  • 忻州免费建网站seo行业岗位有哪些
  • 网站建设优化服务如何网络推广电话
  • 外贸网站建设制作什么广告推广最有效果
  • 做网站设计要注意什么问题手游免费0加盟代理
  • 柳市网站建设公司济南头条今日新闻
  • wordpress手机pc自动切换网站快速优化排名app
  • 阿里巴巴网站如何做免费推广电商网站建设步骤
  • 网站维护 收录百度服务商
  • 外贸商城网站开发书沈阳网站制作
  • 怎么样用css做网站电商网站卷烟订货流程
  • 做网站常用什么软件百度拍照搜索
  • 番禺做网站的公司快速优化seo软件
  • 长安公司网站设计宁德市人社局官网
  • 无锡互联网公司排名南宁求介绍seo软件
  • php做网站切换语言重庆店铺整站优化
  • 重庆网站建设有名 乐云践新seo成创网络
  • 免费ppt模板免费下载完整版免费seo是什么简称
  • 专做机酒的网站数据平台
  • wordpress获取站点副标题学生个人网页制作素材
  • 信息发布网站开发优化外包服务公司
  • 做网站开发要学多久现在百度推广有用吗
  • 越南语网站怎么做搜索引擎关键词怎么优化