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

146. LRU 缓存 --力扣 --JAVA

题目

请你设计并实现一个满足  LRU (最近最少使用) 缓存 约束的数据结构。

实现 LRUCache 类:

  • LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存
  • int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。
  • void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字。

函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。

解题思路

  1. 由题可知,需要Map来存储数据,List可以通过通过控制添加到的索引位置来将数据提前;
  2. 对Map进行操作时,通过更新List涉及的数据;
  3. 溢出时从List获取末尾节点即最近最少使用的数据进行删除更新。

代码展示

class LRUCache {Map< Integer, Integer> lru = null;List<Integer> sort = null;int cap;public LRUCache(int capacity) {lru = new HashMap<>();sort = new ArrayList<>(capacity);cap = capacity;}public int get(int key) {Integer val = lru.get(key);if(val != null){sort.remove((Integer) key);sort.add(0, key);return val;} else {return -1;}}public void put(int key, int value) {if(lru.containsKey(key)){lru.put(key,value);sort.remove((Integer) key);sort.add(0, key);} else {if (lru.size() == cap) {int last = sort.get(cap - 1);sort.remove(cap - 1);lru.remove(last);}lru.put(key, value);sort.add(0, key);}}
}

http://www.lryc.cn/news/257103.html

相关文章:

  • 【C++】POCO学习总结(十):Poco::Util::Application(应用程序框架)
  • 探索医学影像:如何通过ROI灰度直方图和ROI区域方格图揭示隐秘细节?
  • SASS基本语法总结
  • 【C++】简单工厂模式
  • el-tree数据量过大,造成浏览器卡死、崩溃
  • 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-A
  • 面向LLM的App架构——业务维度
  • ElasticSearch之cat plugins API
  • 【小米电脑管家】安装使用教程--非小米电脑
  • 视频讲解|基于多目标粒子群算法的配电网储能选址定容
  • Android 13 - Media框架(22)- MediaCodec(三)
  • git提交报错 fatal: LF would be replaced by CRLF in package-lock.json
  • 卷积详解和并行卷积
  • c#生成二维码二维码中间添加定制LoGo
  • 设计CPU功能的数字电路
  • 在windows下编译libiconv库
  • html,css,开发知识,调试知识
  • Vulnerability: File Upload(Medium)--MYSQL注入
  • 短视频账号剪辑矩阵+无人直播系统源头开发
  • Python traceback模块:获取异常信息
  • 单点登录方案调研与实现
  • HarmonyOS应用开发者基础认证考试(稳过)
  • 日常开发日志
  • 【FMCW毫米波雷达设计 】 — FMCW波形
  • 力扣labuladong一刷day35天
  • Matlab 曲线动态绘制
  • Spark DataFrame和Dataset使用例子
  • CSS彩色发光液体玻璃
  • OpenGLES:glReadPixels()获取相机GLSurfaceView预览数据并保存
  • 小红书蒲公英平台开通后,有哪些注意的地方,以及如何进行报价?