1. 程式人生 > >Lintcode 134. LRU Cache (Medium) (Python)

Lintcode 134. LRU Cache (Medium) (Python)

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)