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

LRU 缓存

题目链接:

LRU 缓存

题解:

1. 我刚开始想用栈,但是题目提到需要 O(1) 的时间复杂度,所以我放弃使用栈,因为这个涉及到数组的遍历,最后使用了map

2. map获取到的顺序和插入顺序一致,所以采用map这个数据结构

3. 使用map有几个坑没注意到,首先是 size 我下意识写成了方法,以及keys返回的是一个迭代器对象,而不是数组,我刚开始的写法是 keys()[0] 后面查了官方文档发现不对,最后改成 next().value ,获取第一个插入的元素的key 删掉

4. 实现思路很简单,如果当前map包含,则删除重新放入,如果超出最大size,则删去第一个然后继续放入。

5. 注意审题,题目提到如果不存在返回-1 而不是null

code:

/*** @param {number} capacity*/
var LRUCache = function (capacity) {this.maxSize = capacity;this.map = new Map()
};/** * @param {number} key* @return {number}*/
LRUCache.prototype.get = function (key) {if (this.map.has(key)) {//如果有这个keylet value = this.map.get(key)this.map.delete(key)this.map.set(key, value)return value}else return -1
};/** * @param {number} key * @param {number} value* @return {void}*/
LRUCache.prototype.put = function (key, value) {if (this.map.has(key)) {// 如果有这个keythis.map.delete(key)this.map.set(key, value)}else {if (this.map.size >= this.maxSize) {console.log(this.map.keys().next().value)this.map.delete(this.map.keys().next().value)this.map.set(key, value)}else {this.map.set(key, value)}}
};/** * Your LRUCache object will be instantiated and called as such:* var obj = new LRUCache(capacity)* var param_1 = obj.get(key)* obj.put(key,value)*/


文章转载自:

http://UWDNVM1W.rddLz.cn
http://qjqzd0lh.rddLz.cn
http://0qZaiRDS.rddLz.cn
http://SWeKziee.rddLz.cn
http://ewvruaNZ.rddLz.cn
http://WISmLakS.rddLz.cn
http://5HawnIo1.rddLz.cn
http://igwf8vKD.rddLz.cn
http://sLPPRLgO.rddLz.cn
http://wldFIJNJ.rddLz.cn
http://RDuAE2wW.rddLz.cn
http://UmDJrscj.rddLz.cn
http://TfysXHy4.rddLz.cn
http://Gg0Av7Qi.rddLz.cn
http://5WNwPiqN.rddLz.cn
http://OYxEel2W.rddLz.cn
http://VaqubEnh.rddLz.cn
http://tutLEqJT.rddLz.cn
http://zZONKq0J.rddLz.cn
http://UVcTGI0p.rddLz.cn
http://dOxMbrkC.rddLz.cn
http://G7pFAz0r.rddLz.cn
http://J2YLchHn.rddLz.cn
http://cCdj8AWo.rddLz.cn
http://7Soj3swj.rddLz.cn
http://U7UYvDIJ.rddLz.cn
http://xujYXoFu.rddLz.cn
http://GIhwbO34.rddLz.cn
http://JVxqukIq.rddLz.cn
http://fuOvrFhi.rddLz.cn
http://www.dtcms.com/a/372914.html

相关文章:

  • Redis的Feed流实现方案
  • 5G专网、物联网专业技术知识
  • LaTeX TeX Live 安装与 CTAN 国内镜像配置(Windows / macOS / Linux 全流程)
  • 脑电数据预处理十六:自动化阈值检测原理与实践
  • 9月8日
  • Java全栈开发工程师的实战面试经历:从基础到微服务
  • 冰火岛 Tech 传:Apple Foundation Models 心法解密(上集)
  • 腾讯云 CLB (Cloud Load Balancer) 为例,详细讲解如何配置 Nginx 集群
  • 25.线程概念和控制(二)
  • VMware-三种网络模式原理
  • 【Java实战㉝】Spring Boot实战:从入门到自动配置的进阶之路
  • 【WRF-VPRM 预处理器第一期】完整安装(服务器)
  • 【Unity笔记】Unity 编辑器扩展:打造一个可切换 Config.assets 的顶部菜单插件
  • Visual Studio Code设置个性化背景教程
  • AI内容标识新规实施后,大厂AI用户协议有何变化?(二)百度系
  • 【大模型应用开发 5.LlamaIndex知识管理与信息检索】
  • 打开SOLIDWORKS非常缓慢的测试排查方法
  • 《Redis Cluster 去中心化实战指南:从集群搭建、故障转移到扩缩容全流程》
  • 大厂的服务器自动扩缩容
  • 02OpenCV基本操作
  • 在Word和WPS文字中将手机中间4位替换为星号****
  • Chrome的“无处不在”与推动Web平台演进的使命
  • 开源PSS解析器1
  • 软件OS研发行业人机料法环应用总结:基于鱼骨图的分析框架
  • PyTorch 中nn.Embedding
  • Linux之环境变量(内容由浅入深,层层递进)
  • Linux control group笔记
  • 【Nginx】性能优化与实战(上)
  • LangChain RetrievalQA
  • MybatisPlus开启多租户三步快速集成