【leetcode】缓存淘汰策略题目总结

ops/2025/2/13 2:00:54/

146. LRU 缓存

我们使用了一个双向链表cache来存储数据,同时使用一个哈希表hash_map来映射键和链表节点的迭代器。当调用get(key)函数时,我们首先检查hash_map中是否存在该key,如果存在则将之前位置移到链表头部并返回值;当调用put(key, value)函数时,我们先检查hash_map中是否存在该key,存在的话将该节点从链表中删除,不管存在与否都需要考虑是否需要删除旧数据(缓存已满的情况)。

class LRUCache {
private:int _capacity;list<pair<int, int>> _cache;unordered_map<int, list<pair<int, int>>::iterator> _hashmap;public:LRUCache(int capacity) {_capacity = capacity;}int get(int key) {if (_hashmap.find(key) == _hashmap.end()) {return -1;}auto iter = _hashmap[key];int value = iter->second;_cache.erase(iter);_cache.push_fron

http://www.ppmy.cn/ops/30278.html

相关文章

深度学习避坑指南

安装设置了CUDA&#xff0c;但在anaconda的虚拟环境中&#xff0c;CUDA_HOME显示未设置&#xff0c;torch.cuda.is_available()输出未False。 原因&#xff1a;Cuda和torch版本不匹配。 解决办法&#xff1a;检查环境变量&#xff0c;并安装于CUDA适配的torch

前端请求没问题,后端正常运行,但查不出数据

写代码时写得快了些&#xff0c;Orders.的订单状态写错了CONFIRMED 改成COMPLETED

简单数据加解密,JS和JAVA同时实现

前端Vue调用Java后端接口中的数据进行加密&#xff0c;以避免敏感数据泄露。 现在实现一个高性能加密方法&#xff0c;用来对数据进行加密后传输。算法包括JS的加密和解密方法&#xff0c;也包括Java的加密解密方法。 可以在前端加密&#xff0c;后端解密。也可以在后端加密&…

vector的使用

1.构造函数 void test_vector1() {vector<int> v; //无参的构造函数vector<int> v2(10, 0);//n个value构造&#xff0c;初始化为10个0vector<int> v3(v2.begin(), v2.end());//迭代器区间初始化,可以用其他容器的区间初始化vector<int> v4(v3); //拷贝…

三种修改 Docker 镜像默认存储位置的方法

由于系统初始分区的原因&#xff0c;导致操作系统中对应 / 分区不会太大&#xff0c;通过 /var 目录不会单独分区。如果上面运行 Docker 服务&#xff0c;经过长时间的使用&#xff0c;会使原本就比较大的分区越来越不够用。如何更好地的处理这个问题呢&#xff1f; 1. 使用软…

labview强制转换的一个坑

32位整形强制转换成枚举的结果如何&#xff1f; 你以为的结果是 实际上的结果是 仔细看&#xff0c;枚举的数据类型是U16&#xff0c;"1"的数据类型是U32&#xff0c;所以转换产生了不可预期的结果。所以使用强制转换时一定要保证两个数据类型一致&#xff0c;否则…

贝叶斯统计实战:Python引领的现代数据分析之旅

贝叶斯统计这个名字取自长老会牧师兼业余数学家托马斯贝叶斯(Thomas Bayes&#xff0c;1702—1761)&#xff0c;他最先推导出了贝叶斯定理&#xff0c;该定理于其逝世后的1763年发表。但真正开发贝叶斯方法的第一人是Pierre-Simon Laplace(1749—1827)&#xff0c;因此将其称为…

Ubuntu22.04 私钥登录

1. 背景 以前一直使用秘钥登录Linux&#xff0c;最近新装了一台Ubuntu 22.04&#xff0c;照旧部署公钥&#xff0c;使用私钥登录&#xff0c;结果SecureCRT 登录没有问题&#xff0c;使用Xshell登录一直报“所选的用户密钥未在远程主机上注册,请再试一次”。然后各种试&#x…