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

【hot100-java】LRU 缓存

链表篇

灵神题解

 

 

class LRUCache {private static class Node{int key,value;Node prev,next;Node (int k,int v){key=k;value=v;}}private final int capacity;//哨兵节点private final Node dummy=new Node(0,0);private final Map<Integer,Node> keyToNode =new HashMap<>();public LRUCache(int capacity) {this.capacity=capacity;dummy.prev=dummy;dummy.next=dummy;}public int get(int key) {Node node=getNode(key);return node!=null?node.value:-1;}public void put(int key, int value) {Node node=getNode(key);//有书则更新if(node!=null){node.value=value;return;}node=new Node(key,value);keyToNode.put(key,node);//放在最上面pushFront(node);//书太多了if(keyToNode.size()>capacity){Node backNode=dummy.prev;keyToNode.remove(backNode.key);//去掉最后一本书remove(backNode);}}//取节点private Node getNode(int key){//没有这本书if(!keyToNode.containsKey(key)){return null;}//有这本书Node node=keyToNode.get(key);//抽出来remove(node);//放在最上面pushFront(node);return node;}//删除一个节点(抽出一本书)private void remove(Node x){x.prev.next=x.next;x.next.prev=x.prev;}//链表头添加节点private void pushFront(Node x){x.prev=dummy;x.next=dummy.next;x.prev.next=x;x.next.prev=x;}
}/*** 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/460295.html

相关文章:

  • Centos7安装ZLMediaKit
  • 面试问我LLM中的RAG,咱就是说秒过!!!
  • python程序操作pdf
  • 【Python报错】ImportError: DLL load failed while importing _network: 找不到指定的模块。
  • 外包干了5天,技术明显退步
  • 正则表达式 | Python、Julia 和 Shell 语法详解
  • JavaScript全面指南(一)
  • docker-compose与docker
  • DDPM浅析
  • 力扣刷题-算法基础
  • 理解 Python 中的 Hooks 和装饰器
  • Android 原生程序使用gdb, addr2line, readelf调试
  • PHP 函数 func_num_args() 的作用
  • 深入解析单片机原理及其物联网应用:附C#示例代码
  • HTTP 和 WebSocket
  • 科技云报到:大模型时代下,向量数据库的野望
  • 贪吃蛇游戏(代码篇)
  • 数控走心机系统可以定制吗
  • PHP实现OID(Object identifier)的编码和解码
  • 架构设计笔记-12-信息系统架构设计理论与实践
  • 【Power Compiler手册】15.多角多模式设计中的功耗优化
  • 关于HalconDeeplearn中的语义分割的实现
  • 【STL】AVLTree模拟实现
  • 无极低码课程【tomcat部署windows环境厂家乱码处理】
  • 注册安全分析报告:惠农网
  • Qualitor checkAcesso.php 任意文件上传漏洞复现(CVE-2024-44849)
  • PHP-FPM和FastCGI
  • 【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
  • jupyterlab的安装与使用攻略/包括汉化方法
  • std::list