【leetcode】146.LRU缓存js

题目

LRU是什么?

LRU是"Least Recently Used"的缩写,意思是"最近最少使用"。它是一种缓存淘汰策略,核心思想是:当缓存空间满了,需要淘汰数据时,优先淘汰那些最长时间没有被访问的数据。(学过操作系统页表那边应该深有体会吧要手工写的!)

代码-map

js里的map会记住键值对插入的顺序(本身内置了一个"插入顺序"的链表),因此可以利用这个特性把它当成"有序的哈希表"来用。

javascript 复制代码
/**
 * @param {number} capacity
 */
var LRUCache = function(capacity) {
    this.capacity = capacity
    this.map = new Map()
};

/** 
 * @param {number} key
 * @return {number}
 */
LRUCache.prototype.get = function(key) {
    if (!this.map.has(key)) return -1
    const value = this.map.get(key)
    this.map.delete(key)
    this.map.set(key, value)
    return value
};

/** 
 * @param {number} key 
 * @param {number} value
 * @return {void}
 */
LRUCache.prototype.put = function(key, value) {
    if (this.map.get(key))  this.map.delete(key)
    this.map.set(key, value)
    if (this.map.size > this.capacity) {
        const oldestKey = this.map.keys().next().value
        this.map.delete(oldestKey)
    }
};

/** 
 * 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)
 */
相关推荐
吴长建先生重名了1 小时前
GitHub Actions部署报表系统踩坑记:幂等性与限
算法
贝壳6901 小时前
一个2026年2月才上传的库,凭什么敢碰2009年就有人写烂的题目
算法
2501_933923252 小时前
redis:string类型常见命令
数据库·redis·缓存
文丑颜不良啊2 小时前
LeetCode2901~2920题目解析
java·leetcode
贝壳6902 小时前
同一道三亿位选型题,三个AI给了我三个答案,我把它们拉进同一台机器复跑
算法
黄连木笛4 小时前
Redis Insight 汉化教程:Windows / macOS / Linux 设置中文界面(附繁體、教程汉化、关闭自动更新)
数据库·redis·缓存
文丑颜不良啊4 小时前
LeetCode2861~2880题目解析
java·leetcode
青少儿编程课堂4 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
在所不辞兄5 小时前
为什么在新能源汽车电驱与热管理开发中,AI驱动的数字孪生和数据驱动仿真正在部分替代对物理台架与实车标定的依赖?
人工智能·深度学习·神经网络·算法·机器学习
I_belong_to_jesus15 小时前
C++关于分支预测的优化1
开发语言·c++·算法