一、题目
二、示例
三、思路
本题采用hash表,以及迭代器,当每一次访问的元素都从中删除,然后再从后面加入。当put进一个元素时,此时应该判断该元素是否存在,如果存在,则先删除,然后再进行插入。最后使用迭代器删除第一个元素。
四、代码
/**
* @param {number} capacity
*/
var LRUCache = function(capacity) {
this.cache = new Map()
this.length = capacity
};
/**
* @param {number} key
* @return {number}
*/
LRUCache.prototype.get = function(key) {
if(this.cache.has(key)) {
let temp = this.cache.get(key)
this.cache.delete(key)
this.cache.set(key, temp)
return temp
}else {
return -1
}
};
/**
* @param {number} key
* @param {number} value
* @return {void}
*/
LRUCache.prototype.put = function(key, value) {
if(this.cache.has(key)) this.cache.delete(key)
this.cache.set(key, value)
if(this.cache.size > this.length) {
this.cache.delete(this.cache.keys().next().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)
*/
五、总结
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/123447618
内容来源于网络,如有侵权,请联系作者删除!