LeetCode-146.LRU缓存(Python)

此题看题解

题目链接

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.mzph.cn/news/240416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Android]CheckBox复选框

在Android开发中,复选框(CheckBox)是一种常用的控件,用于让用户在多个选项中进行选择。它通常用于表单中,让用户选择多个选项或者进行多项操作。在本篇博客中,我们将介绍如何在Android应用中使用CheckBox控…

Unity内置的四种渲染管线简介

Unity的渲染管线(Rendering Pipeline)负责将游戏场景转化为可以在屏幕上显示的像素。 Unity 提供以下渲染管线(官方文档的介绍): 内置渲染管线是 Unity 的默认渲染管线。这是通用的渲染管线,其自定义选项…

《Python》面试常问:深拷贝、浅拷贝、赋值之间的关系(附可变与不可变)【用图文讲清楚!】

背景 想必大家面试或者平时学习经常遇到问python的深拷贝、浅拷贝和赋值之间的区别了吧?看网上的文章很多写的比较抽象,小白接收的难度有点大,于是乎也想自己整个文章出来供参考 可变与不可变 讲深拷贝和浅拷贝之前想讲讲什么是可变数据类型…

Win10 使用 Nmap 扫描 Andorid 设备开放端口

Nmap Nmap 是 网络探测工具和安全/端口扫描器。 官网链接 Nmap参考指南(Man Page) 官网下载地址 Downloading Nmap Nmap 下载安装 到官网下载对应操作系统的安装包, 默认配置,一直下一步安装即可。安装过程中备份下安装路径,后续用到。…

九州未来大模型一体机,加速AI应用落地

2023年已接近尾声,对于中国人工智能产业而言,这一年注定成为一个重要的转折点。在不同行业中,人工智能的应用不断涌现,众多大模型如雨后春笋般涌现。然而,在这一发展过程中也不可避免地出现了一系列问题,包…

Java项目启动过程中Mybatis报错bug(多问题汇总,持续更新)

目录 前言1. Error: Method queryTotal execution error of sql2. Cause: java.sql.SQLSyntaxErrorException: Unknown column xxxxx in fiel其他前言 统计实战中关于Mybatis出错的原因 1. Error: Method queryTotal execution error of sql 执行Springboot的时候出现如下错…

vcruntime140_1.dll文件下载安装方法分享,如何安全修复vcruntime140_1.dll

遇到vcruntime140_1.dll文件遗失是用户在使用Windows操作系统时较为普遍遭遇到的一个问题,它归类于动态链接库(DLL)文件缺失的常见情形。在今天的内容里,我们将深入探讨如何正确地下载和安装vcruntime140_1.dll文件,以…

dangerouslyUseHTMLString选项来启用自定义 HTML 片段

Old&#xff1a; const msg 切换旧版成功&#xff0c;推荐 <span id"changeMsg" style"color: #47FFF1;; text-decoration: underline;">切换新版</span> 体验最新效果;const message ElMessage({customClass: site-toast,dangerouslyUseHTML…

得到山形数组的最少删除次数(LeetCode日记)

LeetCode-1671-得到山形数组的最少删除次数 题目信息: 我们定义 a r r arr arr 是 山形数组 当且仅当它满足&#xff1a; a r r . l e n g t h > 3 arr.length > 3 arr.length>3存在某个下标 i i i &#xff08;从 0 开始&#xff09; 满足 0 < i < a r r…

Google推出Gemini AI开发——10年工作经验的Android开发要被2年工作经验的淘汰了?

应用程序中利用 Gemini 前言&#xff08;可略过&#xff09;、使用 Gemini Pro 开发应用程序正文、Android Studio 中构建Gemini API Starter 应用第 1 步&#xff1a;在 AI 的新项目模板的基础上进行构建第 2 步&#xff1a;生成 API 密钥第 3 步&#xff1a;开始原型设计 正文…

Mybatis之增删改查

目录 一、引言 二、Mybatis——增 举例&#xff1a;添加用户 三、Mybatis——删 举例&#xff1a;删除用户 四、Mybatis——改 举例&#xff1a;修改用户 五、Mybatis——查 六、注意 END&#xff1a; 一、引言 书接上回&#xff0c;我们在了解完mybatis之后&#xff0c;肯…

STM32F4 HAL流水灯Proteus仿真

源码下载&#xff1a;https://download.csdn.net/download/zlkk00/88654405

CSS基础小练习

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>圣诞节快乐</title><style>/*设置背景色*/body{background-image:linear-gradient(green 50%,red 50%);background-size:100% 30px;}/*让div在页面居中*/#text{…

ubuntu 18/20/22 安装 mysql 数据库

这里写自定义目录标题 ubuntu 18/20/22 安装 mysql 数据库1. 准备2. 安装 mysql3. 配置4. 测试 demo 用户5 服务管理5.1 查看服务状态5.2 启动服务5.3 停止服务5.4 重启服务 ubuntu 18/20/22 安装 mysql 数据库 1. 准备 安装前需要知道 root 用户的密码 假如不知道 root 用户…

20231223使用Rockchip原厂的Android11调通Firefly的AIO-3399J开发板上的AP6356S

20231223使用Rockchip原厂的Android11调通Firefly的AIO-3399J开发板上的AP6356S 2023/12/23 14:14 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2…

C# Onnx yolov8n csgo player detection

目录 效果 模型信息 项目 代码 下载 C# Onnx yolov8n csgo player detection 效果 模型信息 Model Properties ------------------------- date&#xff1a;2023-12-22T15:01:08.014205 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-…

学会这套Pytest接口自动化测试框架,击败99%的人

Pytest 的下载安装 1、Python3 使用 pip install -U pytest 安装 2、查看 pytest 版本信息 pytest --version 3、pytest 用例的执行规则&#xff1a; ①测试文件以 test_xx.py 命名需要以 test_开头&#xff08;或_test 结尾&#xff09; ②测试类以 Test_开头&#xff0…

QtRO(Qt Remote Objects)分布式对象远程通信

一、什么是QtRO Qt Remote Objects&#xff08;QRO&#xff09;是Qt提供的一种用于实现远程对象通信的机制。 QtRO支持两种类型的通信&#xff1a;RPC&#xff08;远程过程调用&#xff09;和LPC&#xff08;本地进程通信&#xff09;。 RPC&#xff08;远程过程调用&#xf…

智能优化算法应用:基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.骑手优化算法4.实验参数设定5.算法结果6.…

跨平台应用程序开发软件,携RAD Studio 12新版上线

RAD Studio 是一款专为程序员而准备的跨平台应用程序开发软件&#xff0c;内置Delphi和CBuilder这两种开发工具&#xff0c;另外还提供了新的C功能&#xff0c;扩展了对ExtJS的RAD服务器支持&#xff0c;增强了对vcL的高dpi支持&#xff0c;提高了firemonk (FMX)的质量等等&…