# LRU 算法
快速查找
快速删除
保证顺序
最近(顺序)最少(快速查找,快速删除,快速插入)使用的最先消失(快速删除)
/**
* @param {number} capacity
*/
var LRUCache = function (capacity) {
// 大小
this.cache = new Map()
this.capacity = capacity
}
/**
* @param {number} key
* @return {number}
*/
LRUCache.prototype.get = function (key) {
// 获取参数 并添加到最近使用 获取不到返回-1
if (this.cache.has(key)) {
const value = this.cache.get(key)
this.cache.delete(key)
this.cache.set(key, value)
return value
}
return -1
}
/**
* @param {number} key
* @param {number} value
* @return {void}
*/
LRUCache.prototype.put = function (key, value) {
// 设置key value 设为最近使用
if (this.cache.has(key)) {
this.cache.delete(key)
} else {
// 有没有超过限制 超过了就删除最少使用的一个
if (this.cache.size >= this.capacity) {
const first = this.cache.keys().next().value
this.cache.delete(first)
}
}
this.cache.set(key, value)
}