Skip to content

Latest commit

History

History
39 lines (24 loc) 路 1.76 KB

File metadata and controls

39 lines (24 loc) 路 1.76 KB

Least Recently Used (LRU) Cache

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.

The problem statement

Implement the LRUCache class:

  • LRUCache(int capacity) Initialize the LRU cache with positive size capacity.
  • int get(int key) Return the value of the key if the key exists, otherwise return undefined.
  • void set(int key, int value) Update the value of the key if the key exists. Otherwise, add the key-value pair to the cache. If the number of keys exceeds the capacity from this operation, evict the least recently used key.

The functions get() and set() must each run in O(1) average time complexity.

Implementation

See the LRUCache implementation example in LRUCache.js. The solution uses a HashMap for fast O(1) cache items access, and a DoublyLinkedList for fast O(1) cache items promotions and eviction (to keep the maximum allowed cache capacity).

Linked List

Made with okso.app

You may also find more test-case examples of how the LRU Cache works in LRUCache.test.js file.

Complexities

Average
Space O(n)
Get item O(1)
Set item O(1)

References