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

锦州宝地建设集团有限公司网站王野虓

锦州宝地建设集团有限公司网站,王野虓,广告在线设计制作,seo工作流程图题目描述:请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 获得更多?算法思路:代码文档,算法解析的私得。 运行效果 完整代码 import java.util.HashMap; import java.util.Map;/*** 2 * Author: L…

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

获得更多?算法思路:代码文档,算法解析的私得。

运行效果
在这里插入图片描述

完整代码

import java.util.HashMap;
import java.util.Map;/*** 2 * @Author: LJJ* 3 * @Date: 2023/8/7 13:14* 4*/
public class LRUCache {class Node{int key;String value;Node prev;Node next;public Node(int key , String value){this.key = key;this.value = value;}}private int capacity;private Map<Integer,Node> cache;private Node head;private Node tail;// 初始化LRUCache类的构造函数,// 使用了一个哨兵节点的技巧,将head和tail初始化为哨兵节点,并不存储具体的键值对。// 哨兵节点可以简化链表的操作,避免处理头部和尾部节点时需要特殊处理的情况。public LRUCache(int capacity){this.capacity = capacity;cache = new HashMap<>();//初始化头尾节点;head = new Node(-1, "-1");tail = new Node(-1, "-1");head.next = tail;tail.prev = head;}public String get(int key){if (cache.containsKey(key)){Node node = cache.get(key);//将查到的节点移动到链表头部removeNode(node);addToHead(node);return node.value;}return "-1";}public void put(int key, String value){if (cache.containsKey(key)){Node node = cache.get(key);node.value = value;//将更新后的节点移动到链表头部removeNode(node);addToHead(node);}else {if (cache.size() >= capacity){//如果缓存已满,需要移除最久未使用的节点(即链表尾部节点)cache.remove(tail.prev.key);removeNode(tail.prev);}Node newNode = new Node(key,value);cache.put(key,newNode);//将新的节点插入链表头部addToHead(newNode);}}// 将节点插入链表头部private void addToHead(Node node){node.next = head.next;head.next.prev = node;head.next = node;node.prev = head;}//移除节点private void removeNode(Node node){node.prev.next = node.next;node.next.prev = node.prev;}private static void printCache(Node head){Node current = head;while (current != null){System.out.print("(" + current.key + ", " + current.value + ") -> ");current = current.next;}System.out.println("null");}public static void main(String[] args) {LRUCache lruCache = new LRUCache(3);// 插入键值对 (1, "A")lruCache.put(1, "A");// 插入键值对 (2, "B")lruCache.put(2, "B");// 插入键值对 (3, "C")lruCache.put(3, "C");// 此时缓存状态为:3 -> 2 -> 1,其中1是最近访问的,3是最久未使用的System.out.println("初始缓存状态为:");printCache(lruCache.head);// 获取键1对应的值,输出"A"System.out.println(" // 获取键1对应的值:"+lruCache.get(1));// 此时缓存状态不变:1 -> 3 -> 2System.out.println("获取键1对应的值,输出\"A\"后的缓存状态为:");printCache(lruCache.head);// 插入键值对 (4, "D"),此时缓存已满,需要逐出最久未使用的键值对,即键2 -> 值B被逐出lruCache.put(4, "D");// 此时缓存状态为:4 -> 1 -> 3,其中3是最久未使用的,4是最近访问的System.out.println("插入键值对 (4, \"D\"),此时缓存已满,需要逐出最久未使用的键值对,即键2 -> 值B被逐出的缓存状态为:");printCache(lruCache.head);// 获取键2对应的值,由于键2已经被逐出,输出-1System.out.println("获取键2对应的值:"+lruCache.get(2));// 此时缓存状态不变:4 -> 1 -> 3System.out.println("获取键2对应的值,由于键2已经被逐出,输出-1的缓存状态为:");printCache(lruCache.head);// 插入键值对 (5, "E"),此时缓存已满,需要逐出最久未使用的键值对,即键3 -> 值C被逐出lruCache.put(5, "E");// 此时缓存状态为:5 -> 4 -> 1,其中1是最久未使用的,5是最近访问的System.out.println("插入键值对 (5, \"E\"),此时缓存已满,需要逐出最久未使用的键值对,即键3 -> 值C被逐出的缓存状态为:");printCache(lruCache.head);// 获取键3对应的值,由于键3已经被逐出,输出-1System.out.println("获取键3对应的值:"+lruCache.get(3));// 此时缓存状态不变:5 -> 4 -> 1System.out.println(" // 获取键3对应的值,由于键3已经被逐出,输出-1的缓存状态为:");printCache(lruCache.head);}
}
http://www.yayakq.cn/news/116874/

相关文章:

  • 宁波建设企业网站2022没封的网站免费的
  • 长治网站制作的流程古风淡雅ppt模板免费
  • 网站做seo的好处cn域名建网站
  • 无限成都成都市广播电视台官方网站wordpress query_posts 分页
  • 搜索引擎优化seo网站做网站标题图片大小
  • 企业网站建设效果东莞设计网站建设方案
  • 做淘宝客网站制作教程视频教程设计风格网站欣赏
  • 定制网站哪个好ppt模板大全免费下载简洁
  • 做网站虚拟主机配置专门做肥料外贸的网站
  • 如何创网站如何用wordpress上传根目录
  • 简单的网站开发软件网络营销岗位技能
  • 做网站用什么软件?个人网站建设赚取流量费
  • 东莞网站建设优化东莞东莞排名优化怎么做
  • 网站建设 中企动力阀门网络营销策略概念
  • 做算法题的 网站微信公众号管理系统
  • 网站建设分站要备案做个游戏网站多少钱
  • 旅游网站建设平台分析做网站需要买网址吗
  • 东道品牌创意集团百度关键词搜索优化
  • 房产交易网站建设策划案网站模板外包
  • 东莞市公租房申请网站-建设网织梦做的网站好优化
  • 网站推广seo做58网站怎么赚钱
  • 网站开发后台需要什么技术践行新使命忠诚保大庆网站建设
  • 阿里logo设计平台能做SEO优化的网站建设
  • 快速建网站模板大访问量的网站怎么做优化
  • 德州市德城区城乡建设局网站wordpress.c0m
  • dede网站制作教程昆山玉山网站建设
  • 建站行业的利润产品视频宣传片
  • 猪八戒网站建设报价魔域网页版
  • 优化网站排名解析推广万网wordpress
  • 中山建设招聘信息网站廊坊建设局网站6