Skip to content

Instantly share code, notes, and snippets.

@pschipitsch
Last active January 29, 2019 19:09
Show Gist options
  • Save pschipitsch/d1e7aeeab22b715c3a98e1a5994ee6b5 to your computer and use it in GitHub Desktop.
Save pschipitsch/d1e7aeeab22b715c3a98e1a5994ee6b5 to your computer and use it in GitHub Desktop.
lru

LRU Cache

Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and put.

Also, creating a new cache object should take an integer for the capacity of the cache. It should either be required or default to a value.

Notes

get(key) - Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1.

put(key, value) - Set or insert the value if the key is not already present. When the cache reached its capacity, it should invalidate the least recently used item before inserting a new item.

Example

cache = LRUCache.new(2)
cache.put(1, 1)
cache.put(2, 2)
cache.get(1)       # returns 1
cache.put(3, 3)    # evicts key 2
cache.get(2)       # returns -1 (not found)
cache.put(4, 4)    # evicts key 1
cache.get(1)       # returns -1 (not found)
cache.get(3)       # returns 3
cache.get(4)       # returns 4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment