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

设计LRU缓存结构

https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84

/**
 * @param {number} capacity
 */
var Solution = function (capacity) {
  this.capacity = capacity;
  // 使用map数据结构构造
  this.map = new Map();
};

/**
 * @param {number} key
 * @return {number}
 */
Solution.prototype.get = function (key) {
  // write code here
  // get分为可以获取到和获取不到
  if (this.map.has(key)) {
    // 如果存在这个key,将value获取出来
    let value = this.map.get(key);
    // 删除原本位置的key
    this.map.delete(key);
    // 将最新的key放在map的最后
    this.map.set(key, value);
    return value
  } else {
    return -1;
  }
};

/**
 * @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) {
    let last = Array.from(this.map.keys())[0]
    this.map.delete(last);
  }
};

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)
 */

#算法#
全部评论

相关推荐

03-26 13:04
已编辑
电子科技大学 算法工程师
xiaowl:你这个简历“条目上”都比较有深度性,但是实际上面试官又没法很好的评估你是怎么达到很多看上去很厉害的结果的。要避免一些看上去很厉害的包装,比如高效的内存复用策略的表达,如果仅是简单的一些内存共享机制,而且面试上也没有深挖的空间,就不要这样表达。比如,工程化模式本质上可能就是定义了一些abstract class,那也就没特别多值得讲的内容。建议简历上应该侧重那些你花了大量时间和精力解决、研究的问题,不要过分追求“丰富”,而是关注在技术深入度、问题解决能力的表现上。
没有实习经历,还有机会进...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务