题解 | #设计LRU缓存结构 使用map方法#
设计LRU缓存结构
http://www.nowcoder.com/practice/e3769a5f49894d49b871c09cadd13a61
function LRU( operators , k ) {
var map = new Map(); //原型对象
var list = [];
var res = [];
for(var item in operators){
var op = operators[item][0];
if(op===1){
map.set(operators[item][1],operators[item][2]); //set方法 map.set(key,value) 且有重复key时会重新赋值
if(list.length>=k){
list.shift(); //删除最前面一个(最不常用)
}
list.push(operators[item][1]); //将最新的key插入到最后
}else if(op===2){
var key = operators[item][1];
var index = list.indexOf(key)
if(index==-1){
res.push(-1);
}else{
res.push(map.get(key)); //获取key属性的值
list.splice(index,1);
list.push(key); //删除数组中间的值并插入到最后
}
}
}
return res
}
module.exports = {
LRU : LRU
};
查看7道真题和解析