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

力扣-146.LRU缓存机制

题目链接

146.LRU缓存机制

class LRUCache {HashMap<Integer, Integer> cache = new LinkedHashMap<>();int size = 0;public LRUCache(int capacity) {this.size = capacity;}public int get(int key) {if (!cache.containsKey(key)) {return -1;}move(key);return cache.get(key);}public void put(int key, int value) {if (cache.containsKey(key)) {cache.remove(key);cache.put(key, value);return;}if (cache.size() == this.size) {cache.remove(cache.keySet().iterator().next());}cache.put(key, value);}public void move(int key) {int val = cache.get(key);cache.remove(key);cache.put(key, val);}
}

小结:通俗地讲,LRU就是一个长度固定的队列,满了之后新的会把老的挤出去,特别的地方在于查询或修改操作,要把这个元素删掉重新插入,使用了这个元素就好像它是最近添加的新元素。由于在java中,LinkedHashMap是有序的,可以直接通过cache.keySet().iterator().next()找到最久远的key,可以比较方便地删除旧元素。

http://www.dtcms.com/a/282837.html

相关文章:

  • 主机安全---开源wazuh使用
  • 在 Ubuntu 上安装 GBase 8s 的完整实战指南
  • 立创EDA操作记录
  • Linux网卡与软件仓库快捷配置脚本
  • 基于Hadoop与LightFM的美妆推荐系统设计与实现
  • Leetcode Easy刷题:合并两个连续系列
  • 【Java入门到精通】(五)初识MySql数据库
  • Linux Ubuntu apt包管理器安装K8s1.30.1+Ingress-Nginx
  • 神经网络之权重初始化
  • 【深度学习】神经网络-part3
  • 云原生技术
  • 合成孔径雷达干涉测量InSAR技术流程(星载/地基系统+DEM重建+DInSAR形变监测+时序分析)等
  • 杨辉三角-附C语言实现方法
  • TBT 5、TBT 4 和 USB4 的差异概述
  • 零基础数据结构与算法——第五章:高级算法-动态规划经典-背包问题
  • 单片机学习笔记.IIC通信协议(根据数据手册写IIC驱动程序,这里以普中开发板上的AT24C02为例)
  • HTTP REST API、WebSocket、 gRPC 和 GraphQL 应用场景和底层实现
  • 使用Django框架构建Python Web应用
  • 插入排序及其时间复杂度分析
  • 类模版的相关案例
  • 数字输入缓冲器是如何影响低功耗电流的?
  • 建设大模型应用的方法和理论
  • Lsposed/Xposed
  • 3 习题1
  • 第3章 Excel表格格式设置技巧
  • Weblogic历史漏洞利用
  • WebSocket 防护的重要性及应对策略:从原理到实战
  • HTTP协议介绍
  • 技术分享:如何用规则定义生成自定义文件时间戳
  • xss作业