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

leetcode146-LRU缓存

leetcode 146
在这里插入图片描述

思路

什么是LRU缓存?

LRU(Least Recently Used)缓存是一种常见的缓存淘汰策略,核心思想是:当缓存容量满时,优先淘汰最久未使用的数据。LeetCode 146 题要求实现一个支持get和put操作的 LRU 缓存,且操作时间复杂度需为 O (1)

核心思路

在 JavaScript 中,Map对象天然具备键值对插入顺序保留的特性,且map.keys().next().value可获取最早插入的键(最久未使用)。利用这一点,可很好实现删除最久未使用数据的功能

  • 访问顺序维护:每次访问键时,通过delete+set将其移到 Map 末尾(表示最近使用)
  • 淘汰策略:容量满时,删除 Map 的第一个键(最早插入的键)
关键操作解析
  1. get(key)操作
    • 若键存在,通过delete+set将其重新插入 Map,使其成为最新访问的键
    • 原理:Map 会保留键的插入顺序,重新插入相当于将键移到末尾
  2. put(key, val)操作
    • 若键已存在,同样通过delete+set更新值并刷新顺序。
    • 若键不存在且容量满,通过map.keys().next().value获取最早插入的键(最久未使用)并删除,再插入新键

时间复杂度:O(1) 空间复杂度: O(capacity)

实现

class LRUCache {constructor(capacity) {this.capacity = capacity;this.cacheMap = new Map();}get(key) {const isExit = this.cacheMap.has(key);if (isExit) {const val = this.cacheMap.get(key);this.cacheMap.delete(key);this.cacheMap.set(key, val);return val;}return -1;}put(key, val) {const isExit = this.cacheMap.has(key);if (isExit) {this.cacheMap.delete(key)this.cacheMap.set(key, val)} else {if (this.capacity <= this.cacheMap.size) {// 超出缓存容量,删除最久未使用的keyconst first = this.cacheMap.keys().next().value;this.cacheMap.delete(first)}this.cacheMap.set(key, val)}}
}
http://www.dtcms.com/a/251969.html

相关文章:

  • linux 下 Doris 单点部署
  • 【极客时间】大模型RAG进阶实战营毕业总结
  • 【AI大模型】Elasticsearch9 + 通义大模型实现语义检索操作详解
  • Java设计模式完整学习指南(23+4种模式)
  • semi-BATNet
  • 如何让 AI 接入自己的 API?我开发了一个将 OpenAPI 文档转为 MCP 服务的工具
  • 股指期货的多空策略是什么?
  • LoRA 与传统矩阵分解的比较
  • 深入探索Joomla子模板:解决模板更新覆盖问题的终极方案​
  • 【DVWA系列】——SQL注入——low详细教程
  • 【专业梳理】PMP知识体系,以SIPOC流程图为核心的质量工具扩展
  • 【保姆级开发文档】安卓开发四大组件及其生命周期详解
  • python profiling
  • DNS递归查询步骤
  • 盟接之桥EDI软件:开启制造业数据对接与协同的新纪元
  • https说明
  • 数据库核心技术深度剖析:事务、索引、锁与SQL优化实战指南(第五节)----数据库事务
  • anaconda安装及问题解决
  • 【LeetCode 207】课程表(有向无环图 DAG、拓扑排序)
  • 【Android】输入路由
  • 器件(九)—对设计的模块进行双脉冲仿真
  • 134-135Elements-UI组件库
  • 仿muduo库实现并发服务器
  • hot100 -- 13.堆系列
  • android CALL 之 RIL、TELEDCOM、PHONE
  • SpringCloud Alibaba场景实践(Nacos篇)
  • c++ algorithm常用算法汇总
  • 13分钟讲解主流Linux发行版
  • 数据库优化实战分享
  • 设备健康管理系统搭建全技术解析:从架构设计到智能运维实践