LeetCode热题100-LRU 缓存

LRU = Least Recently Used,最近最少使用,题目要求所有操作必须O(1),所以只能使用哈希 + 双向链表实现。

  • 使用现成OrderedDict
python 复制代码
from collections import OrderedDict

class LRUCache:

    def __init__(self, capacity: int):
       self.capacity = capacity
       self.cache = OrderedDict() 

    def get(self, key: int) -> int:
        if not key in self.cache:
            return -1
        self.cache.move_to_end(key, last=False)  # 将书放到链首
        return self.cache[key]
        

    def put(self, key: int, value: int) -> None:
        self.cache[key] = value
        self.cache.move_to_end(key, last=False)
        if len(self.cache) > self.capacity:
            self.cache.popitem() # 去掉最后一本书
  • 自己实现(后续补充)
相关推荐
文丑颜不良啊1 分钟前
LeetCode76~100题目解析
java·leetcode
零基础12325 分钟前
基于模型的强化学习与不基于模型的强化学习:核心区别与实战选择
python·算法
罗西的思考12 小时前
【Agentic RL】Dressage Staleness 控制深度分析
人工智能·算法·机器学习
quaer12 小时前
弗洛伊德算法--判圈法寻找环的入口O(n) O(1)
数据结构·算法
文丑颜不良啊13 小时前
LeetCode51~75题目解析
leetcode
高晶13 小时前
无乘法器实现LC二阶滤波器:基于移位运算的快速算法与四种精度推导
算法·设计模式·程序员
ysbfsy13 小时前
大数计算思路
算法
高晶13 小时前
主从自动分配算法:平均值乘以设备数一半的选举基准值解析
算法·设计模式·程序员
学电子她就能回来吗14 小时前
LeetCode Hot 100|普通数组专题学习笔记(零基础版)
笔记·算法·leetcode
用户老李14 小时前
反向传播计算梯度举例
算法