Friday, September 19, 2014

Leetcode: LRU Cache @Python

class LRUCache:
    # @param capacity, an integer
    def __init__(self, capacity):
        LRUCache.dic=collections.OrderedDict()
        LRUCache.capacity=capacity
        LRUCache.size=0
        
    # @return an integer
    def get(self, key):
        try:
            value=LRUCache.dic[key]
            del LRUCache.dic[key]
            LRUCache.dic[key]=value
            return value
        except KeyError:
            return -1
            
    # @param key, an integer
    # @param value, an integer
    # @return nothing
    def set(self, key, value):
        try:
            del LRUCache.dic[key]
            LRUCache.dic[key]=value
        except:
            if LRUCache.size==LRUCache.capacity:
                LRUCache.dic.popitem(False)
                LRUCache.dic[key]=value
            else:
                LRUCache.size+=1
                LRUCache.dic[key]=value

No comments :

Post a Comment