← Усі задачіJavaScript · Senior
LRUCache
Напишіть клас LRUCache(capacity) - кеш, який у разі переповнення витісняє елемент, до якого найдовше не зверталися.
get(key) повертає значення або undefined і позначає ключ як нещодавно використаний. put(key, value) додає або оновлює значення; це теж використання. Властивість size - поточна кількість елементів. Обидві операції мають працювати за O(1).
Ctrl+Enter - запустити тести. Tab - відступ; щоб вийти з редактора клавіатурою, натисніть Esc, а потім Tab. Код зберігається в цьому браузері.
Тести (5)
const c = new LRUCache(2); c.put('a', 1); c.put('b', 2); expect(c.get('a')).toBe(1); c.put('c', 3); expect(c.get('b')).toBe(undefined); expect(c.get('a')).toBe(1); expect(c.get('c')).toBe(3);
const c = new LRUCache(2); c.put('a', 1); c.put('a', 10); c.put('b', 2); expect(c.size).toBe(2); expect(c.get('a')).toBe(10);
const c = new LRUCache(2); c.put('a', 1); c.put('b', 2); c.put('a', 3); c.put('c', 4); expect(c.get('b')).toBe(undefined); expect(c.get('a')).toBe(3);
const c = new LRUCache(1); c.put('x', 0); expect(c.get('x')).toBe(0); c.put('y', null); expect(c.get('x')).toBe(undefined); expect(c.get('y')).toBe(null);
const c = new LRUCache(3); expect(c.get('missing')).toBe(undefined); expect(c.size).toBe(0);