1 Star 0 Fork 3.4K

pony1223/LearningNotes

forked from 陌溪/LearningNotes 
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
LRU.py 1.62 KB
一键复制 编辑 原始数据 按行查看 历史
陌溪 提交于 2020-07-16 21:44 +08:00 . add leetcode
class LRUCache(object):
def __init__(self, capacity):
self.capacity = capacity
self.map = {}
self.array = []
self.size = 0
def get(self, key):
if self.map.get(key):
index = self.array.index(key)
# 将该元素移动到最新使用的
del self.array[index]
self.array.append(key)
return self.map.get(key)
else:
return -1
def put(self, key, value):
if self.size < self.capacity:
if self.map.get(key):
# 将该元素移动到最新使用的
index = self.array.index(key)
del self.array[index]
self.array.append(key)
# 更新key
self.map[key] = value
else:
self.map[key] = value
self.array.append(key)
self.size += 1
else:
if self.map.get(key):
# 将该元素移动到最新使用的
index = self.array.index(key)
del self.array[index]
self.array.append(key)
# 更新key
self.map[key] = value
else:
# 淘汰第一个,在最后插入元素
deleteKey = self.array.pop(0)
del self.map[deleteKey]
self.map[key] = value
self.array.append(key)
if __name__ == '__main__':
cache = LRUCache(2)
print(cache.get(2))
cache.put(2, 6)
print(cache.get(1))
cache.put(1, 5)
cache.put(1, 2)
print(cache.get(1))
print(cache.get(2))
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/packagejava/LearningNotes.git
git@gitee.com:packagejava/LearningNotes.git
packagejava
LearningNotes
LearningNotes
master

搜索帮助