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

35. LRU 缓存

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

实现LRUCache类:

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

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

双端链表

class Node(object): def __init__(self,key=0,value=0,prev=None,next=None): self.key=key self.value=value self.prev=prev self.next=next class LRUCache(object): def __init__(self, capacity): self.capacity=capacity self.head=Node() self.tail=Node() self.head.next=self.tail self.tail.prev=self.head self.mp={} self.full=0 def _remove_node(self,node): node.prev.next=node.next node.next.prev=node.prev def _add_to_head(self,node): node.next=self.head.next node.prev=self.head self.head.next.prev=node self.head.next=node def _move_to_head(self,node): self._remove_node(node) self._add_to_head(node) def _remove_tail(self): node=self.tail.prev self._remove_node(node) return node def get(self, key): if key in self.mp: self._move_to_head(self.mp[key]) return self.mp[key].value return -1 def put(self, key, value): if key in self.mp: self.mp[key].value=value self._move_to_head(self.mp[key]) else: node=Node(key,value) self.mp[key]=node self.full+=1 self._add_to_head(node) if self.full>self.capacity: cur=self._remove_tail() del self.mp[cur.key] self.full-=1 return cur.value
http://www.jsqmd.com/news/815243/

相关文章:

  • 告别混乱!手把手教你用CCS6.0为DSP28069搭建清晰的工程目录结构
  • 2026无心磨床技术全解析:参数匹配与工艺调整指南 - 奔跑123
  • 用Arduino和AMG8833做个迷你热像仪:手把手教你从接线到显示(附1.44寸TFT屏配置)
  • DeepSeek SOLID检查器内部白皮书流出(仅限首批200名架构师):AST解析层如何精准识别里氏替换陷阱?
  • 3步掌握WeChatExporter:免费开源的微信数据备份解决方案
  • 从英特尔与AMD竞争看半导体产业格局变迁与战略启示
  • 2026最权威的AI辅助论文方案实测分析
  • 从STM32转战CH32F103?手把手教你移植MPU6050小车程序(附GPIO/USART避坑点)
  • Cadence PCB设计环境变量(env)失效排查与修复指南
  • AgentHeroes:AI角色生成到发布的自动化工作流全栈平台
  • 2026外圆磨床技术解析:选型与厂家服务评估指南 - 奔跑123
  • 白细胞介素(Interleukins, ILs)的研究进展与生物学功能
  • 抖音无水印下载终极指南:douyin-downloader 快速入门与高效使用
  • 告别安卓模拟器:Windows原生APK安装解决方案全解析
  • DolphinDB海量数据查询:分页与采样
  • 2026内圆磨床技术指南:精度控制与靠谱厂家筛选 - 奔跑123
  • iperf3 Windows网络性能测试:终极指南与实战教程
  • 从传统ABAP到现代化开发:ABAP RESTful应用编程模型深度解析
  • 3分钟实现Windows系统光标全面升级:macOS风格光标完全指南
  • 2026年|10款主流降ai率工具合集(含免费降ai率版),亲测AI率80%到9.7% - 降AI实验室
  • 免费开源Cherry MX键帽3D模型:打造个性化机械键盘的完整指南
  • 5步完成专业级代码质量报告:从SonarQube数据到团队协作的完整指南
  • 全国标书代写 + 招标信息平台首选:安华招标旗下安华招标网,全行业全地区一站式中标服务 - 安华招标
  • BLE心率监测服务开发:从GATT协议到CCCD通知机制的完整实现
  • 2026届学术党必备的五大AI写作工具推荐榜单
  • 3种智能策略自动化将Markdown笔记转化为交互式思维导图
  • E-GEO:AI时代零代码SEO工具包,让内容在ChatGPT等AI搜索引擎中脱颖而出
  • 从电网大停电到实时预警:同步相量测量与监控技术演进
  • 2026年4月有名的全自动粘箱机实力厂家推荐,淘宝联动线/双片钉箱机/全自动钉箱机/全自动粘箱机,全自动粘箱机公司推荐 - 品牌推荐师
  • 2026金华义乌美国专线空派海派物流公司十大实力星榜:源头服务商深度测评 - 企业品牌优选推荐官