2020年8月第2周 - 智云健康前端技术每周文摘

avatar
@智云健康

文摘目录

原创

翻译

文章与新闻

推荐库

每周一练

获取最近插入的值

获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。

写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。

示例:

const cache = new ZYCache( 2 /* 缓存容量 */ );

cache.put(1, 1);
cache.put(2, 2);
cache.get(1);       // 返回  1
cache.put(3, 3);    // 该操作会使得关键字 2 作废
cache.get(2);       // 返回 -1 (未找到)
cache.put(4, 4);    // 该操作会使得关键字 1 作废
cache.get(1);       // 返回 -1 (未找到)
cache.get(3);       // 返回  3
cache.get(4);       // 返回  4
cache.put(3, 6);    
cache.put(3);       // 返回  6

要求:

get、put方法都需要在 O(1) 时间复杂度内完成,空间复杂度O(n)。

/**
 * @param {number} capacity
 */
var ZYCache = function(capacity) {

};

/** 
 * @param {number} key
 * @return {number}
 */
ZYCache.prototype.get = function(key) {

};

/** 
 * @param {number} key 
 * @param {number} value
 * @return {void}
 */
ZYCache.prototype.put = function(key, value) {

};

Github每周同步更新