【算法】LRU置换算法

embedded/2024/9/24 1:19:00/

运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。
实现 LRUCache 类:

LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存
int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。
void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。

进阶:你是否可以在 O(1) 时间复杂度内完成这两种操作?

#哈希链表结构
class LRUCache {/*** @param Integer $capacity*/private $queue = [];private $cache = [];function __construct($capacity) {$this->capacity = $capacity;}/*** @param Integer $key* @return Integer*/function get($key) {if (isset($this->cache[$key])) {if ($pos = array_search($key, $this->queue)) {unset($this->queue[$pos]);array_unshift($this->queue, $key);}return $this->cache[$key];}return -1;}/*** @param Integer $key* @param Integer $value* @return NULL*/function put($key, $value) {if (isset($this->cache[$key])) {$pos = array_search($key, $this->queue);unset($this->queue[$pos]);} elseif (count($this->queue) >= $this->capacity) {$k = array_pop($this->queue);unset($this->cache[$k]);}array_unshift($this->queue, $key);$this->cache[$key] = $value;}
}

http://www.ppmy.cn/embedded/104415.html

相关文章

压缩文件夹对比

分类 在Windows系统中,压缩文件夹可以使用多种格式,以下是一些常见的压缩格式及其区别: ZIP: ZIP是最常见的压缩格式之一,广泛支持于Windows和其他操作系统中。它可以用于压缩单个文件或整个文件夹。ZIP格式支持不同…

《机器学习》 DBSCAN算法 原理、参数解析、案例实现

目录 一、先看案例 1、对K-mean算法 1)优点: 2)缺点: 2、使用DBSCAN去分类 二、DBSCAN算法 1、什么是DBSCAN 2、实现过程 三、参数解析 1、用法 2、参数 1)eps: 邻域的距离阈值 2)mi…

电脑的一些配置(长期更新)

GPU驱动 主要是打游戏用到啦 上链接:Nvida驱动下载网址 关于电脑的一些显卡、驱动、更新等等都要做一些补充

机器学习之实战篇——预测二手房房价(线性回归)

机器学习之实战篇——预测二手房房价(线性回归) 前言数据集和实验文件下载相关文章推荐实验过程导入相关模块数据预处理手动梯度下降训练使用scikit-learn随机梯度下降 前言 实验中难免有许多缺陷和错误,望批评指正! 数据集和实验文件下载 …

Unet改进12:添加PCONV||减少冗余计算和同时存储访问

本文内容:添加PCONV 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 为了设计快速的神经网络,许多工作都集中在减少浮点运算(FLOPs)的数量上。然而,我们观察到FLOPs的这种减少并不一定会导致类似程度的延迟减少。这主要源于低效率的每秒浮点操作数(FLOP…

Nuxt 项目实战 - 16:利用CDN+OSS给网站全面提速

背景 我面试过一些前端同学,同时也看到网上很多前端同学说可以利用CDN加速,提高网站的访问速度,具体如何搞?具体如何配置?估计很多前端都是不知道的,一方面权限所限,另一方面可能只是知道可以利…

NVI技术创新联盟成立,BOSMA博冠IP轻量化制播已运用

2024年北京国际广播电影电视展览会(BIRTV)首日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV 2024超高清全产业链发展研讨会上宣布正式成立。作为国产8K摄像机先行者,BOSMA博冠受邀加入NVI技术…

读取xml的内容并显示在textEdit中,导出xml文件

使用QXmlStreamReader方法读取xml文件 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QStandardItemModel> #include <QtXml> std::vector<std::map<QString, QString>> dataVector;MainWindow::MainWindow(QWi…