Search⌘ K
AI Features

Problem: LRU Cache

Explore how to implement an efficient Least Recently Used (LRU) cache in C#. Understand the use of a dictionary for quick key lookups combined with a doubly linked list to track usage order, ensuring that both Get and Put operations run in constant time. This lesson helps you design and optimize caches, a crucial skill for handling memory in real-world applications.

Statement

Design a data structure that follows the constraints of a least recently used (LRU) cache.

Implement the LRUCache class with the following operations:

  • public LRUCache(int capacity): Initializes the LRU cache with a positive size capacity.

  • public int Get(int key): Returns the value associated with key if it exists in the cache. Otherwise, returns 1-1.

  • public void Put(int key, int value): Updates the value of key if it already exists in the cache. Otherwise, inserts the key\-value pair into the cache. If this insertion causes the number of keys to exceed capacity, the least recently used key must be evicted.

Note: Both Get and Put must operate in O(1)O(1) average time complexity.

Constraints:

  • 11 \leq capacity 3000\leq 3000 ...