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

LRU算法

package LRU缓存;import java.util.Arrays;
import java.util.HashMap;//建立一个双向队列
class MyQueueNode{int key;int value;MyQueueNode pre;MyQueueNode next;public MyQueueNode(int key,int value){this.key = key;this.value=value;}
}
class MyQueue{MyQueueNode head;MyQueueNode tail;public MyQueue(){head=new MyQueueNode(-1,-1);tail=new MyQueueNode(-1,-1);head.next=tail;tail.pre=head;}
}
//最近最少使用
public class LRUCache {int capacity;MyQueue myQueue;HashMap<Integer, MyQueueNode> hashMap;public LRUCache(int capacity) {this.capacity=capacity;myQueue=new MyQueue();hashMap = new HashMap<>();}public int get(int key) {if (!hashMap.containsKey(key)){return -1;}MyQueueNode node = hashMap.get(key);//已经使用了要将这个节点插入至队列的末尾removeNode(node);insertIntoTail(node);return node.value;}//更换至末尾public void insertIntoTail(MyQueueNode node) {node.pre=myQueue.tail.pre;myQueue.tail.pre.next=node;node.next=myQueue.tail;myQueue.tail.pre=node;}public void removeNode(MyQueueNode node){node.next.pre=node.pre;node.pre.next=node.next;}public void put(int key, int value) {if (get(key)!=-1){//存在hashMap.get(key).value=value;}else{//超过容量 移除头节点if (hashMap.size()>=capacity){MyQueueNode node = myQueue.head.next;hashMap.remove(node.key);removeNode(myQueue.head.next);}//新增节点MyQueueNode newNode = new MyQueueNode(key,value);hashMap.put(key,newNode);insertIntoTail(newNode);}}
}

相关文章:

  • 智能超表面通信控制板--通道电压并行控制版
  • 【网络入侵检测】Suricata之数据包内容匹配
  • ABAP_报表权限校验_拿来即用
  • Excel表格转Json格式
  • springboot启动动态定时任务
  • GTX 不同复位之间的区别
  • LeetCode-16.最接近的三数之和 C++实现
  • 保姆级教程:RK3588部署yolo目标检测模型
  • HarmontOS-ArkUI V2状态 !!语法糖 双向绑定
  • AI(人工智能)学习中的主要分类及其详细说明
  • Python异常处理全面指南
  • Spring Batch 专题系列(七):Spring Batch 与数据库集成
  • Apipost,前端后端测试都在用的接口设计调试工具
  • python——循环语句
  • 如何选择合适的数据类型以节省存储空间和提升查询效率?
  • Android 应用添加Tile到SystemUI QuickSettings
  • 微信小程序边框容器带三角指向
  • 力扣热题100——普通数组(不普通)
  • 广告ROI提升警报:亚马逊新功能如何重构卖家流量漏斗
  • SpringAI版本更新:向量数据库不可用的解决方案!
  • 网站硬件建设方案/智能搜索引擎
  • 山东网页制作网站/温州seo优化
  • 永安网站建设/seo网站推广助理招聘
  • 南京做网站企业/无锡百度正规公司
  • 广州网站建设怎么样/网络营销的策划方案
  • 福建网站建设/什么软件可以推广自己的产品