Реализуйте класс LRUCache с capacity (максимальное число элементов):
get(key) — вернуть значение по ключу или -1 если нетput(key, value) — установить значение. Если capacity превышен, удалить самый давно использованный элементОбе операции должны работать за O(1).
const cache = new LRUCache(2);
cache.put(1, 1);
cache.put(2, 2);
cache.get(1); // 1
cache.put(3, 3); // вытесняет ключ 2 (он давно не использовался)
cache.get(2); // -1
Ключевой трюк: Map в JavaScript сохраняет порядок вставки. Начало Map — наименее давно использованный (LRU). При get или put делайте delete(key) + set(key, val) — элемент переместится в конец. При переполнении удаляйте map.keys().next().value — это первый (самый старый) ключ.
Что ещё могут спросить: реализовать без Map (через двусвязный список + хэш-таблицу — классическая реализация O(1)). Или добавить TTL к каждому элементу.