146. LRU Cache 快取作法

這邊題目要我們做快取伺服器。在超過容量的時候,要刪除最久未使用的內容,並且都要保持複雜度為O(1)。

class LRUCache:

    def __init__(self, capacity: int): 
        self.return1={}
        self.capacity=capacity

    def get(self, key: int) -> int:
        if key in self.return1:
            get = self.return1[key]
            del self.return1[key]
            self.return1[key]=get
            return get
        return -1

    def put(self, key: int, value: int) -> None:
        if key in self.return1:
            del self.return1[key]
            self.return1[key]=value
        else:
            if len(self.return1)<self.capacity:
                self.return1[key]=value
            else:
                print(self.return1)
                print(iter(self.return1))
                print(next(iter(self.return1)))
                print("-")
                del self.return1[next(iter(self.return1))] 
                self.return1[key]=value

上面是最核心的概念,特別的部分我們可以看到在下面更新(put)的地方。

del self.return1[next(iter(self.return1))] 

解釋一下用到的兩個方法

iter(): 把可迭代物件轉換為迭代器
next(): 丟出一個

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。