LRU-кэш

Словари Средняя
Реализуйте кэш вместимостью capacity с вытеснением давно неиспользуемых записей (LRU). Операции заданы списком ops, каждая - тройка [код, ключ, значение]: - код 0 - put(ключ, значение): добавляет или обновляет запись; если после этого записей больше capacity, вытесняется самая давно использованная; - код 1 - get(ключ) (значение в тройке игнорируется): возвращает значение или -1, если ключа нет. И put, и get считаются «использованием» записи (обновляют её давность). Верните список результатов всех get в порядке вызова. Каждая операция должна работать за O(1) - линейный поиск давности по всем записям на каждый вызов слишком медленный на длинной последовательности.
Сигнатура функции
lru_cache_queries(capacity: int, ops: list[list[int]]) -> list[int]
Примеры
ВходОжидаемый результат
[2, [[0, 1, 1], [0, 2, 2], [1, 1, 0], [0, 3, 3], [1, 2, 0], [1, 3, 0]]][1, -1, 3]
[1, [[0, 1, 10], [1, 1, 0], [0, 2, 20], [1, 1, 0]]][10, -1]
1решили
1пытались
100%успешность
Войдите, чтобы решить →