当前位置: 首页 > news >正文

算法知识点————【LRU算法】

思想:淘汰最久没有使用的
应用场景:手机清后台的时候先清最久没有使用的应用
设计一种数据结构:接收一个 capacity 参数作为缓存的最大容量,然后实现两个 API,一个是 put(key, val) 方法存入键值对,另一个是 get(key) 方法获取 key 对应的 val,如果 key 不存在则返回 -1。要求:get 和 put 方法必须都是 O(1) 的时间复杂度。
在这里插入图片描述
在这里插入图片描述
哈希链表:哈希的查找配合双向链表的快速插入和删除
在这里插入图片描述

class Node{
public:int key,value;Node *prev,*next;Node(int k =0 ,int v =0 ) : key(k),value(v){}
};
class LRUCache{
private:int capacity;Node* dummy;//哨兵unordered_map<int,Node*> key_to_value;//删除节点void remove(Node * x){x->prev->next = x->next;x->next->prev = x->prev;}//添加节点 放到最上面void put_front(Node * x){x->prev = dummy;x->next = dummy->next;x->prev->next = x;x->next->prev = x;}  //获取节点 抽出放在最上面Node* get_node(int key){auto it = key_to_value.find(key);if(it == key_to_value.end()) return nullptr;//没找到auto node = it->second;//找到的话 map的node节点返回remove(node);put_front(node);return node;}
public:LRUCache(int capacity) : capacity(capacity),dummy(new Node()){dummy->prev  = dummy;dummy->next = dummy;}int get(int key){auto node = get_node(key);return node? node->value:-1;}void put(int key,int value){auto node = get_node(key);if(node){//有这本书node->value = value;return ;}key_to_value[key] = node = new Node(key,value);//没有这本书put_front(node);//添加if(key_to_value.size() > capacity){//添加得判断auto node_back = dummy->prev;key_to_value.erase(node_back->key);remove(node_back);delete node_back;}}};

相关文章:

算法知识点————【LRU算法】

思想&#xff1a;淘汰最久没有使用的 应用场景&#xff1a;手机清后台的时候先清最久没有使用的应用 设计一种数据结构&#xff1a;接收一个 capacity 参数作为缓存的最大容量&#xff0c;然后实现两个 API&#xff0c;一个是 put(key, val) 方法存入键值对&#xff0c;另一个是…...

记一次MySQL视图查询优化的经验

背景&#xff1a;库房系统项目迁移&#xff0c;两个版本的结构发生了很大变化&#xff0c;新版本的库存系统在开发阶段由于数据量小&#xff0c;根据看不出查询的性能问题&#xff0c;还沾沾自喜的想新版本多好。但是在做同步之后&#xff08;规则变更&#xff0c;需要插入很多…...

Cloudways搭建WordPress外贸独立站完整教程(1)

验证邮件发送完成后&#xff0c;就等待Cloudways的回复邮件&#xff0c;一般24小时之内就会收到激活的邮件。 Cloudways账号升级 激活成功后还需要账户升级&#xff0c;Cloudways提供了为期3天的免费试用体验。如果在试用期结束之前未绑定信用卡以升级账户&#xff0c;试用期…...

Delphi5数据控制组件——查询

文章目录 效果图参考查询Free方法Close方法总结通俗理解 完整代码 效果图 参考 本文是在上一篇的基础上&#xff0c;将查询页面重新写一次。 查询 {点击查询} procedure TForm2.Button1Click(Sender: TObject); vartj,tj1,tj2,tj3,tj4,tj5,tj6,tj7:string; begin//按照工号查…...

git pull之后发现项目错误,如何回到之前的版本方法

目录 首先我们打开小程序的cmd的黑窗口&#xff0c;git reflog查看之前的版本 之后再git reset --hard main{1} 我这个就已经返回了之前的6daaa2e的版本了 首先我们打开小程序的cmd的黑窗口&#xff0c;git reflog查看之前的版本 之后再git reset --hard main{1} 我这个就已…...

防跌倒识别摄像机

防跌倒识别摄像机 是一种结合了人工智能技术和监控摄像技术的先进设备&#xff0c;旨在通过实时监测和分析监控画面中的行为动作&#xff0c;及时发现并预防跌倒事件的发生。这种摄像机在医疗、养老院、家庭等场所有着广泛的应用前景。 防跌倒识别摄像机在医疗领域具有重要意义…...

MyQql性能诊断与实践

获取更多免费资料&#xff0c;见下图...

有序序列判断

描述 输入一个整数序列&#xff0c;判断是否是有序序列&#xff0c;有序&#xff0c;指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。 数据范围&#xff1a;3 < n< 50 序列中的值都满足 1< val < 100 输入描述&#xff1a; 第一行输入一个整数N…...

【Kubernetes知识点问答题】健康检查

目录 1. Kubernetes 对集群 Pod 和容器健康状态如何进行监控和检测的。 2. 解释 LivenessProbes 探针的作用及其适用场景。 3. 解释 ReadinessProbe 探针的作用及其适用场景。 4. 解释 StartupProbe 探针的作用及其适用场景。 5. 说明 K8s 中 Pod 级别的 Graceful Shutdown…...

【Prometheus】PromQL数据类型以及常用的计算函数用法详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

STM32高级定时器生成互补PWM的原理与代码实现

文章目录 前言一 CubeMx配置1.1 TIM1 Mode and Configuration1.2 Paramter Settings 二 程序代码三 仿真分析总结 前言 互补 PWM&#xff08;Complementary PWM&#xff09;是指一对逻辑状态互为反相的 PWM&#xff08;脉冲宽度调制&#xff09;信号。这种信号配置常见于电机控…...

双指针题总结

双指针题总结 hot100移动零盛水最多的容器三数之和接雨水最小覆盖子串 hot100 移动零 题目链接&#xff1a; 283.移动零 代码&#xff1a; class Solution {public void moveZeroes(int[] nums) {int slow 0;for (int fast 0; fast < nums.length; fast ){if (nums[fas…...

[数据集][目标检测]人脸口罩佩戴目标检测数据集VOC+YOLO格式8068张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8068 标注数量(xml文件个数)&#xff1a;8068 标注数量(txt文件个数)&#xff1a;8068 标注…...

JVM3-双亲委派机制

目录 概述 作用 如何指定加载类的类加载器&#xff1f; 面试题 打破双亲委派机制 自定义类加载器 线程上下文类加载器 Osgi框架的类加载器 概述 由于Java虚拟机中有多个类加载器&#xff0c;双亲委派机制的核心是解决一个类到底由谁加载的问题 双亲委派机制&#xff…...

经典文献阅读之--DEviLOG(使用合成数据和真实世界数据的数据驱动占用网格映射基于Transformer的BEV方案量产方案)

0. 简介 在自动驾驶汽车&#xff08;AV&#xff09;的感知任务中&#xff0c;数据驱动的方法往往优于传统方法。这促使我们开发了一种基于数据的方法来从激光雷达测量中计算占用网格地图&#xff08;OGM&#xff09;。我们的方法扩展了之前的工作&#xff0c;使得估计的环境表…...

ssh之登录服务器后,自动进入目录(四十七)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…...

如何看待IBM中国研发部裁员?

背景&#xff1a; 近日&#xff0c;IBM中国宣布撤出在华两大研发中心&#xff0c;引发了IT行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅影响了众多IT从业者的职业发展&#xff0c;也让人思考全球化背景下中国IT产业的竞争力和未来发展方向。面对这一突如其来的变化&…...

计算机毕业设计选题推荐-土地承包管理系统-Java/Python项目实战(亮点:数据可视化分析、账号锁定、智能推荐)

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

2024年高校辅导员考试题库及答案

一、判断题 121.高校学生身份权是基于高等教育的性质&#xff0c;学生应该获得的本体性权利。 答案&#xff1a;正确 122.学费占年生均教育培养成本的比例和标准由财政部制定。 答案&#xff1a;错误 123.享受国家专业奖学金的高校学生免缴学费。 答案&#xff1a;错误 124…...

使用python对股票市场进行数据挖掘的书籍资料有哪些

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…...

简单介绍C语言中的字符串函数

1.首先给出字符分类函数这几个就简单过一下&#xff0c;不做重点说明。这两个为字符转换函数&#xff0c;顾名思义&#xff0c;没什么好介绍的&#xff1b;接下来简单介绍几个字符串函数&#xff1a;strlen.strcpy.strcat.strstr.strncpy.strncat.memcpy.memmove;strlen:求字符…...

终极指南:NanoVG渲染管线深度解析与抗锯齿技术实战

终极指南&#xff1a;NanoVG渲染管线深度解析与抗锯齿技术实战 【免费下载链接】nanovg Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations. 项目地址: https://gitcode.com/gh_mirrors/na/nanovg NanoVG是一款基于OpenGL的轻量级抗锯…...

【读书笔记】《在远远的背后带领》

《在远远的背后带领》书话整理书名由来 "在远远的背后带领"这个书名&#xff0c;源于作者对十余年养育实践的回顾与思考。她发现&#xff0c;父母养育孩子容易走两个极端&#xff1a; 过度控制&#xff1a;强迫孩子按照自己的想法行事&#xff0c;结果双方俱疲&#…...

解码汽车ECU的“健康档案”:剖析吉利Basetech五大运行周期计数器(OCC)的协同诊断逻辑

1. 汽车ECU的“健康档案”是什么&#xff1f; 当你去医院体检时&#xff0c;医生会查看你的病历记录、化验报告和近期症状&#xff0c;综合判断你的健康状况。汽车ECU&#xff08;电子控制单元&#xff09;也有类似的"健康档案"&#xff0c;它就是吉利Basetech技术中…...

SMUDebugTool核心功能全解析:从故障排查到性能优化

SMUDebugTool核心功能全解析&#xff1a;从故障排查到性能优化 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitco…...

Android Studio中文界面终极配置指南:告别英文障碍,提升开发效率

Android Studio中文界面终极配置指南&#xff1a;告别英文障碍&#xff0c;提升开发效率 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePac…...

能做表格的 AI 软件:Excel-Agent,AI 原生重构表格数据分析全流程

当传统 Excel 被卡顿、复杂公式、海量数据难处理、手动重复操作困住时&#xff0c;能做表格的 AI 软件正成为效率破局关键 —— 而 Excel-Agent&#xff0c;正是专为 Excel 场景打造的 AI 数据智能体&#xff0c;以自然语言交互、本地高效计算、全链路数据处理能力&#xff0c;…...

5分钟掌握高效网页完整截图:告别手动拼接的烦恼

5分钟掌握高效网页完整截图&#xff1a;告别手动拼接的烦恼 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension …...

【二进制指数退避算法】

二进制指数退避算法一、概念二、原理一、概念 1.二进制指数退避算法是以太网退避算法&#xff0c;是 CSMA/CD 里处理冲突后重发的核心规则。 2.发生冲突后&#xff0c;不立刻重发&#xff0c;而是随机等一段时间再试。 3.冲突次数越多&#xff0c;随机等待的范围就越大&#x…...

提示工程代码审查避坑指南:10个容易犯的低级错误

提示工程代码审查避坑指南&#xff1a;10个容易犯的低级错误 引言&#xff1a;为什么提示工程需要“代码审查”&#xff1f; 在AI时代&#xff0c;提示词&#xff08;Prompt&#xff09;是人类与大语言模型&#xff08;LLM&#xff09;沟通的“桥梁”。就像程序员写代码需要评审…...