Как создать последний недавно использованный кеш?
Предположим, что вы посетили некоторые пункты. Вам нужно разработать структуру данных для хранения этих элементов. Каждый элемент связан с последним временем посещения.
Каждый раз, когда вы посещаете элемент, проверяйте его в структуре данных. Если элемент был в кеше, обновите время его посещения. В противном случае вставьте его в кеш. Размер кеша фиксированный, если он заполнен, удалить самый старый элемент.
Мое решение:
Используйте элемент карты ‹, visitTime >
Инициализация: Отсортируйте карту с помощью f(visitTime) в порядке убывания. О (nlg п)
Если элемент посещен, найдите его на карте с помощью O(lg n).
Если он был на карте, обновите время O(1). Отсортируйте карту O(lg n).
Если нет, вставьте его в карту, а затем отсортируйте. О (lg п)
Если размер карты > фиксированного размера, удалите последний элемент O(1).
Еще одно решение:
Использовать хеш-таблицу ‹ item , visitTime >
Отсортируйте его O (n lgn).
Если элемент посещается, найдите его в таблице с помощью O (1).
Если он был в таблице, обновите время O(1). Отсортируйте таблицу O(n lg n).
Если нет, вставьте его в таблицу, а затем отсортируйте. О(nlgn)
Если размер таблицы > фиксированного размера, удалите последний элемент O(1).
Есть ли лучшие решения? На) ?