LRU缓存结构 javascript
/**
* lru design
* @param operators int整型二维数组 the ops
* @param k int整型 the k
* @return int整型一维数组
*/
function LRU( operators , k ) {
var map = new Map();
var temp;
var result = [];
for(let i = 0; i < operators.length; i++){
if(operators[i][0] === 1){
// map中已经存在该key,说明其对应value需要更新
if(map.has(operators[i][1])){
map.delete(operators[i][1]);
}else{ //map已满,需要找到最久未访问的删除后,再添加新键值对
if(map.size==k){
const iterator = map.entries();
map.delete(iterator.next().value[0]);
}
}
map.set(operators[i][1], operators[i][2]);
}else{
if(map.has(operators[i][1])){
//如果map中有需要查询的key,先保存其值再删除然后添加,可保证这次访问后该键值对为最新插入,不会在删除时误删
temp = map.get(operators[i][1]);
map.delete(operators[i][1]);
map.set(operators[i][1], temp)
result.push(temp);
}else{
result.push(-1);
}
}
}
return result;
}
module.exports = {
LRU : LRU
}; 
京公网安备 11010502036488号