gitGood.dev
← Back to problems

LRU Cache

HardData Structures

Description

Design a data structure that follows the constraints of a **Least Recently Used (LRU) cache**. 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 `-1`. - `void put(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 `put` must each run in O(1) average time complexity. **Note:** For this problem, implement operations as a function that takes the capacity and a list of operations.
Example 1
Input: capacity = 2, operations = [["put",1,1],["put",2,2],["get",1],["put",3,3],["get",2],["put",4,4],["get",1],["get",3],["get",4]]
Output: [null,null,1,null,-1,null,-1,3,4]
Explanation: After put(1,1) and put(2,2), get(1) returns 1. put(3,3) evicts key 2. get(2) returns -1 (not found).

Constraints

- 1 <= capacity <= 3000 - 0 <= key <= 10^4 - 0 <= value <= 10^5 - At most 2 * 10^5 calls will be made to get and put.
Loading editor...