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

【LinkedHashMap】146. LRU 缓存

146. LRU 缓存

解题思路

  • 与普通的 HashMap 不同,LinkedHashMap 会保持元素的有序性。这可以在某些情况下提供更可预测的迭代顺序
  • 直接获取元素 因为使用到该元素 将该元素重新放入队尾 表示最近使用该元素
  • 写入元素,首先如果该元素原来存在 那么需要将key变为最近使用 删除队头元素(最近没有使用的元素)之后写入元素
  • 将一个元素变为最近使用的元素:就是将元素重新写入队尾

class LRUCache {int cap;// 与普通的 HashMap 不同,LinkedHashMap 会保持元素的有序性。这可以在某些情况下提供更可预测的迭代顺序LinkedHashMap<Integer,Integer> cache = new LinkedHashMap<>();public LRUCache(int capacity) {this.cap = capacity;// 初始化容器}public int get(int key) {if(!cache.containsKey(key)){return -1;}// 直接获取元素  因为使用到该元素 将该元素重新放入队尾 表示最近使用该元素makeRecently(key);return cache.get(key);}public void put(int key, int value) {if(cache.containsKey(key)){// 修改key的值cache.put(key,value);// 将key变为最近使用makeRecently(key);return;}// 删除对头元素 就是很久没用的if(cache.size() >= this.cap){// 链表头部就是最久未使用的keyint oldestKey = cache.keySet().iterator().next();cache.remove(oldestKey);}cache.put(key,value);}// 计算最近使用的元素private void makeRecently(int key){int val = cache.get(key);// 获取元素// 移除keycache.remove(key);// 因为现在使用到该元素  所以将该元素插入队列尾部cache.put(key,val);}
}/*** 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.lryc.cn/news/173646.html

相关文章:

  • Opencv-python去图标与水印方案实践
  • 自己写过比较蠢的代码:从失败中学习的经验
  • C语言 cortex-A7核 点LED灯 (附 汇编实现、使用C语言 循环实现、使用C语言 封装函数实现【重要、常用】)
  • LABVIEW 实战案例1--温度报警系统
  • 【力扣】292. Nim 游戏
  • IAP固件升级分几步?(Qt上位机、)
  • Otter改造 增加springboot模块和HTTP调用功能
  • Vue.js vs React:哪一个更适合你的项目?
  • Debian环境下搭建STM32开发环境
  • 如何防止商业秘密泄露(洞察眼MIT系统商业机密防泄密解决方案)
  • 题目 1062: 二级C语言-公约公倍
  • 【Leetcode】148.排序链表
  • 用《斗破苍穹》的视角打开C#多线程开发1(斗帝之路)
  • 图像处理与计算机视觉--第三章-颜色与纹理分析-6问
  • vue重修002
  • [PowerQuery] PowerAutoMate 刷新PowerBI 数据
  • C语言中各种接口标准
  • vscode常用插件
  • 代码随想录算法训练营day60|84.柱状图中最大的矩形 |完结撒花~
  • 在 android 上使用 adb client
  • 竞赛选题 基于深度学习的视频多目标跟踪实现
  • 分布式应用之监控平台zabbix的认识与搭建
  • C语言大佬的必杀技---宏的高级用法
  • @Retryable和Guava retry
  • conda的安装和使用
  • K8S:pod集群调度及相关操作
  • 阿里云便宜服务器2核2G配置经济型e实例一年182元性能测评
  • 资讯| 工信部拟筹建元宇宙标准化工作组;《权游》作者起诉OpenAI
  • Win10安装Docker Desktop并运行Tutorial示例
  • 1、靶机——Pinkys-Place v3(1)