LeetCode-146.LRU缓存(Python)

news/2024/10/19 6:17:30/

此题看题解

题目链接

class ListNode:def __init__(self, key=None, value=None):self.key = keyself.value = valueself.prev = Noneself.next = Noneclass LRUCache:def __init__(self, capacity: int):self.capacity = capacityself.cache = {}self.head = ListNode()self.tail = ListNode()self.head.next = self.tailself.tail.prev = self.headdef get(self, key: int) -> int:if key in self.cache:node = self.cache[key]self._move_to_head(node)return node.valueelse:return -1def put(self, key: int, value: int) -> None:if key in self.cache:node = self.cache[key]node.value = valueself._move_to_head(node)else:if len(self.cache) == self.capacity:self._remove_tail()node = ListNode(key, value)self.cache[key] = nodeself._add_to_head(node)def _move_to_head(self, node: ListNode) -> None:self._remove_node(node)self._add_to_head(node)def _remove_node(self, node: ListNode) -> None:node.prev.next = node.nextnode.next.prev = node.prevdef _add_to_head(self, node: ListNode) -> None:node.prev = self.headnode.next = self.head.nextself.head.next.prev = nodeself.head.next = nodedef _remove_tail(self) -> None:node = self.tail.prevself._remove_node(node)del self.cache[node.key]
# Your LRUCache object will be instantiated and called as such:
# obj = LRUCache(capacity)
# param_1 = obj.get(key)
# obj.put(key,value)


http://www.ppmy.cn/news/1279020.html

相关文章

数据结构 | 查漏补缺

目录 数据的基本单位 冒泡排序 DFS和BFS中文 Prim 比较 中序线索二叉树 顺序栈 链栈 时间复杂度 循环队列 求第K个结点的值 数据的基本单位 数据元素 循环队列sq中,用数组elem[0‥25]存放数据元素,设当前sq->front为20,sq-&g…

TCP/IP,UDP,DNS,NAT,DHCP,HTTP协议

1.TCP/IP协议 TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传…

数据分析-19-Thera Bank信贷业务数据(包含数据代码)

文章目录 0. 数据代码下载1. 数据集介绍1.1 原始数据集变量的含义:1.2 原始数据的读入与清洗1.3 数据清洗及预处理 2. 探索数据变量2.1 数据相关系数的探索2.2 分类变量与开通贷款的关系探索2.2.1 银行存款证(CD)帐户与贷款之间的关系2.2.2 教…

装修必看干货,砌墙的施工工艺及验收标准。福州中宅装饰,福州装修

亲爱的读者们,大家好!今天我将为大家分享一些关于砌墙的施工工艺及验收标准的重要知识。这些知识对于正在进行装修或者即将进行装修的朋友们来说非常有用,希望大家能够耐心阅读,并从中受益。 1️⃣ 砌墙前的准备工作 在开始砌墙之…

【oracle】【解决方案】ORA-12514:TNS: 监听程序当前无法识别连接描述符中请求的服务 ORA-12541:TNS:无监听程序的错误

今天重新启动服务器后,tomcat启动异常,测试oracle后报错,提示ora-12541:tns:无监听程序 关掉监听服务 打开目录:D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN 修改前配置文件: # listener.ora Net…

MT6785|MTK6785安卓核心板功能规格介绍_Helio G95核心板

MT6785安卓核心板是一款功能强大的工业级4G智能模块,它采用了Android 9.0操作系统。该核心板内置了蓝牙、FM、WLAN和GPS模块,具有高度集成的基带平台,结合了调制解调器和应用处理子系统,以支持LTE/LTE-A和C2K智能终端应用。 MTK67…

创新固定资产管理方式:易点易动集成企业微信的全新解决方案

在当今竞争激烈的商业环境中,高效的固定资产管理对于企业的成功至关重要。然而,传统的资产管理方式往往繁琐、容易出错,并且缺乏实时性和准确性。为了解决这些挑战,易点易动与企业微信进行了集成合作,推出了一种全新的…

循环渲染ForEach

目录 1、接口说明 2、键值生成规则 3、组件创建规则 3.1、首次渲染 3.2、非首次渲染 4、使用场景 4.1、数据源不变 4.2、数据源组项发生变化 4.3、数据源数组项子属性变化 5、反例 5.1、渲染结果非预期 5.2、渲染性能降低 Android开发中我们有ListView组件、GridVi…