题解 | #设计LRU缓存结构#
设计LRU缓存结构
https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84
/**
* @param {number} capacity
*/
var Solution = function(capacity) {
this.map = new Map()
this.capacity = capacity
};
/**
* @param {number} key
* @return {number}
*/
Solution.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}
*/
Solution.prototype.set = function(key, value) {
// 如果之前有这条数据,就删掉
if(this.map.has(key)) {
this.map.delete(key)
}
// 统一变成添加行为
this.map.set(key,value)
// 如果超出最大长度
if(this.map.size > this.capacity) {
const firstKey = this.map.keys().next().value
this.map.delete(firstKey)
}
};
module.exports = {
Solution : Solution
};
/**
* Your Solution object will be instantiated and called as such:
* var solution = new Solution(capacity)
* var output = solution.get(key)
* solution.set(key,value)
*/
