题解 | #设计LRU缓存结构#

设计LRU缓存结构

http://www.nowcoder.com/practice/e3769a5f49894d49b871c09cadd13a61

/**
 * lru design
 * @param operators int整型二维数组 the ops
 * @param k int整型 the k
 * @return int整型一维数组
 */
function LRU( operators ,  k ) {
    // write code here
    let arr = [];
    let map = new Map();
    for(let i = 0;i<operators.length;i++){
        if(operators[i][0] === 1){
            //set
            if(map.has(operators[i][1])){
                map.delete(operators[i][1])
                map.set(operators[i][1],operators[i][2])
            }else{
                map.set(operators[i][1],operators[i][2])
                if(map.size > k){
                    const firstKey = map.keys().next().value;//把最不常用的缓存清除
                    map.delete(firstKey);
                }
            }
        }else{
            //get
            if(map.has(operators[i][1])){
                arr.push(map.get(operators[i][1]))
                let temp = map.get(operators[i][1])
                map.delete(operators[i][1]);
              map.set(operators[i][1], temp)

            }else{
                arr.push(-1)
            }
        }
    }
    return arr
}
module.exports = {
    LRU : LRU
};
全部评论

相关推荐

头像
10-16 09:58
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务