A Least Recently Used (LRU) Cache organizes items in order of use, allowing you to quickly identify which item hasn't been used for the longest amount of time.
Picture a clothes rack, where clothes are always hung up on one side. To find the least-recently used item, look at the item on the other end of the rack.
Implement the LRUCache class:
LRUCache(int capacity)
Initialize the LRU cache with positive sizecapacity
.int get(int key)
Return the value of thekey
if thekey
exists, otherwise returnundefined
.void set(int key, int value)
Update the value of thekey
if thekey
exists. Otherwise, add thekey-value
pair to the cache. If the number of keys exceeds thecapacity
from this operation, evict the least recently used key.
The functions get()
and set()
must each run in O(1)
average time complexity.
See the LRUCache
implementation example in LRUCache.js. The solution uses a HashMap
for fast O(1)
(in average) cache items access, and a DoublyLinkedList
for fast O(1)
(in average) cache items promotions and eviction (to keep the maximum allowed cache capacity).
Made with okso.app
You may also find more test-case examples of how the LRU Cache works in LRUCache.test.js file.
Average | |
---|---|
Space | O(n) |
Get item | O(1) |
Set item | O(1) |