Lintcode 134. LRU Cache (Medium) (Python)
阿新 • • 發佈:2018-12-12
LRU Cache
Description:
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.
get(key) - Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1. set(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.
Code:
class LRUCache:
"""
@param: capacity: An integer
"""
def __init__(self, capacity):
# do intialization if necessary
self.dic, self.capacity, self.ls = {}, capacity, []
"""
@param: key: An integer
@return: An integer
"""
def get(self, key):
# write your code here
if key in self.dic:
self.ls.remove(key)
self.ls.append(key)
return self.dic[key]
else:
return -1
"""
@param: key: An integer
@param: value: An integer
@return: nothing
"""
def set(self, key, value):
# write your code here
self.dic[key] = value
if key in self.ls:
self.ls.remove(key)
elif len(self.ls)>=self.capacity:
self.dic.pop(self.ls.pop(0))
self.ls.append(key)