Leetcode 146. LRU Cache

图解LeetCode146:LRU cache 文章目录思考过程代码实现总结 这是LeetCode中第146号题目,不多说,这也是一个准备面试的同学必备的一道题目,出镜率非常高。 那么什么是LRU cache呢,假设有一个大小为6的数组,最开始保存的是[1,2,3,4,5,6],如果这个数组就是LRU cache的话会有这样的性质: 一图胜千言,现在你应该明白什么是LRU cache了吧。 LRU的全称是Least Recently Used... 阅读详情

两种做法:

1 双向队列+HashMap

2 直接用java的LinkedHashMap,同时重写它的removeEldestEntry逻辑,当容量超过capacity时移除

class LRUCache {
lruLinkedHashMap <Integer,Integer>map = new lruLinkedHashMap();
int cap;
    private class lruLinkedHashMap<K,V> extends LinkedHashMap<K,V>{
        @Override 
        protected boolean removeEldestEntry(Map.Entry<K,V> eldest){
            if(size()>cap)
                return true;
            return false;
        }
    }
    public LRUCache(int capacity) {
        cap = capacity;
    }
    
    public int get(int key) {
        if(map.get(key)!=null){
            int v = map.get(key);
            map.remove(key,v);
            map.put(key,v);
            return v;
        }
        return -1;
    }
    
    public void put(int key, int value) {
        if(map.get(key)!=null){
            int v = map.get(key);
            map.remove(key,v);
            map.put(key,value);
        }
        else{
            map.put(key,value);
        }
        return;
    }
}

/**
 * Your LRUCache object will be instantiated and called as such:
 * LRUCache obj = new LRUCache(capacity);
 * int param_1 = obj.get(key);
 * obj.put(key,value);
 */

VCS2018在Ubuntu20 18安装步骤 之前在Ubuntu20上下VCS,花了好几天时间,本来想写博客避免以后重复劳动。但由于各种原因拖了一两个月,这次由于疫情原因,期末考试推迟,所以就再次在Ubuntu18上下了VCS,顺便写博客记录。 以下VCS2018安装方法适用于 Ubuntu20、Ubuntu18,亲测可用。其他Linux发行版没试过,但应该步骤差不多。 文章目录安装包安装步骤1、建立安装路径,更改权限2、运行安装器进行安装3、生成License文件4、设置环境变量5、验证License6、启动lmgrd验证软件是否安装成功dvever 阅读详情

相关推荐

语言随机效应模型_线性混合效应模型 VS 方差分析

线性混合效应模型相比方差分析具有很多优点。为了让大家更直观的了解,我们来做一下两者的对比。基于模拟的方法,生成了以下数据dat_sim:这种数据格式是长格式,也就是从实验软件导出来的那种数据格式。这种数据格式可以直接使用线性混合效应模型进行分析。该实验设计是被试内项目间的单因素两水平设计。category是自变量,两个水平分别是outgroup和ingroup,outgroup比ingr...

weixin_31960565的博客 2688

leetcode146、OrderedDict与lru_cache

本文探讨了Python中实现LRU缓存的两种方法:使用OrderedDict和哈希表+双向链表。首先介绍了leetcode146题LRU缓存的OrderedDict解法,该结构通过move_to_end和popitem方法自然契合LRU思想。然后分析了Python字典(dict)在3.6版本后实现的有序性特性,并指出其与OrderedDict的区别。最后深入研究了标准库functools.lru_cache的实现细节,展示了其采用哈希表+双向链表的方案,包括缓存命中和未命中时的处理逻辑、线程安全机制等核心实

usiel的博客 1022

FPGA图像处理入门 ZYNQ7020 图像中值膨胀腐蚀滤波

图像处理的三种滤波 中值滤波应用较为广泛 综合膨胀和腐蚀可以实现边缘检测。

Coast_的博客 715

【Leetcode】146. LRU Cache

题目地址: https://leetcode.com/problems/lru-cache/ Least Recently Used Cache。Java里有LinkedHashMap可以直接用。代码如下: import java.util.LinkedHashMap; public class LRUCache extends LinkedHashMap<Integer, Integer...

数学、算法爱好者的博客 530

OCV/AOCV/SOCV的介绍和应用

library中的cell delay是在某个固定的PVT(operating condition)下仿真得出的。,cell的delay并不是一个固定值,而是一个随机值,遵循高斯分布或门特卡洛分布,在STA中用OCV来模拟这一『特征』。OCV全称on chip variation,用于描述不同管子间由于工艺偏差、电压降、温度变化引起的delay变化。,也用于描述工艺偏差引起的net厚度宽度的变化从而导致net的电容电阻变化。优点:设置起来比较简单粗暴,对于不那么先进的工艺可行!的影响,更贴合实际。

m0_61003348的博客 8980

华为Ascend_toolkit在x86ubuntu安装失败报错。[WARNING] driver package is not installed. If you install in docker

这个报错发生在交叉编译配置Ascend_toolkit环境时,安装Ascend_toolkit安装包的时候发生。[Y/N]Y。

anananajiushiwo的博客 1018

[leetcode] 146. LRU Cache

感想 这道题在leetcode是hard的难度,通过率只有21.2%,我记得在某次笔试的时候做到了这一道题,那时候做得不怎么好,我这里把记录一下我以前写的代码,就当复习一下 题目 Design and implement a data structure forLeast Recently Used (LRU) cache. It should support the following ...

Learning from the mistakes 462

YOLO11改进 | 主干网络 | 添加Hyper-YOLO的MANet混合聚合网络

本文详细介绍了在YOLO11目标检测模型中替换C3k2模块为MANet的具体实现方法。文章首先讲解MANet模块的原理,然后分步骤指导如何在YOLO11中添加该模块,包括代码修改、文件配置和模型注册等关键环节。通过实验对比,改进后的YOLO11_MANet模型在保持8.8GFLOPs计算量的同时,参数数量达到3,820,272,网络层数增加到343层。文章还提供了完整的代码实现和网络结构图,并建议结合其他注意力机制或损失函数进一步提升检测效果。最后推荐了相关的深度学习专栏,包含更多YOLO系列改进方法。

kay_545 658

LeetCode 146. LRU 缓存机制(LRU Cache)

易错点正确做法说明更新数据未移动位置保证“最近使用”put 超过容量未淘汰使用删除头部get 不存在时返回错误返回-1使用是 Python 实现 LRU 的最简洁且效率最高的方式。同时掌握哈希表 + 双向链表手动实现 LRU 也是面试时加分项。本题考查的是缓存机制 + 数据结构的组合使用,属于高频面试题之一。错误点正确方式删除时未断开前后节点_remove()正确处理 prev/next忘记从cache删除淘汰节点双向链表头尾更新顺序错误始终更新 prev/next 的双向性。

2501_91641025的博客 1069

SAP使用XCO框架创建RAP所有对象

通过XCO框架自动生成SAP ABAP开发对象。

DeveloperMrMeng的博客 548

信奥赛csp初赛高频考点【位运算】(详细解析)

信奥赛csp初赛高频考点【位运算】(详细解析)

王老师青少年编程 369

LeetCode---146. LRU Cache

LeetCode—146. LRU Cache ####题目

pnnngchg的博客 271

华为OD机试2025C卷 - 精准核酸检测 (C++ & Python & JAVA & JS & GO)

华为OD机试2025C卷 精准核酸检测,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1707

力扣经典题解:LRU缓存机制(146. LRU Cache)数据结构设计艺术

LRU 缓存设计完美展现了 ​数据结构组合​哈希表​:提供闪电般的键值查找能力​双向链表​:优雅维护访问时间序列​虚节点​:巧妙处理边界情况这种设计模式在系统开发中广泛应用,掌握它不仅提升算法能力,更能加深对实际系统设计的理解。算法如艺术,好的数据结构组合如同优美的建筑结构。LRU缓存设计的精妙之处在于其简单的结构达成了高效的操作,这正是计算机科学的魅力所在。

sheep404的博客 815

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode 146. LRU Cache 题解

本题是 LRU 缓存的经典实现。双向链表维护使用顺序哈希表实现 O(1) 查找虚拟头尾节点简化操作移动节点到头部表示最近使用删除尾部节点表示逐出最久未使用。

cannonjinx的博客 2375

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode146 LRU Cache

Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key) - Get the value (will always be positive) of the key if the

fumier的专栏 639

LeetCode 146 LRU Cache

本文记录本人在解决 LeetCode 第146题 LRU Cache 过程中的收获。主要是增加了对 C++ STL list 容器的了解。点击该链接可跳转到 LeetCode 此题目处。本文借鉴了花花酱 的个人网站的讲解和代码。本文相当于对花花酱的代码的注释。 需要解决的题目属于模拟题,即模拟出 Least Recently Used Cache 的运行机制。由于题目对 get()、put()函数时间复杂度都做了 常数级的限制。所故题目的难点主要落在用什么数据结构上。在这里直接给出结论,使用一个 list

OrdinaryMatthew的博客 321

【Java】【LeetCode】146. LRU Cache

题目: Design and implement a data structure forLeast Recently Used (LRU) cache. It should support the following operations:getandput. get(key)- Get the value (will always be positive) of the key ...

zhelong19830726的博客 587

LeetCode146:LRU Cache

Design and implement a data structure forLeast Recently Used (LRU) cache. It should support the following operations:getandput. get(key)- Get the value (will always be positive) of the key if th...

卷卷萌的博客 265

leetcode146 LRU cache Design

第一次写这种类型的程序,感觉挺好玩的.LRU就是 Least Recently Used.LRU Cache就是一种缓存机制,当缓存已经满了的时候,最近最少使用的元素移出缓存换上新的元素. 我们采用双向链表来判断最近最少使用的元素.我们保存指向双向链表的所有元素的指针,当访问一个元素的时候,把双向链表中的该元素移动到队尾.即只要使用某个元素,就把该元素移动到队尾,所以队尾是最近最多使用的元素,队...

LOVETEDA的博客 357

LeetCode 146. LRU cache

1 什么是Cache 1.1 概念 Cache,即高速缓存,是介于CPU和内存之间的高速小容量存储器。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近CPU的频率。 当CPU发出内存访问请求时,会先查看 Cache 内是否有请求数据。如果存在(命中),则直接返回该数据;如果不存在(失效),再去访问内存 —— 先把内存中的相应数据载入缓存,再将其返回...

try to do 225

LeetCode 146:LRU Cache

Design and implement a data structure forLeast Recently Used (LRU) cache. It should support the following operations:getandput. get(key)- Get the value (will always be positive) of the key if th...

叶现一的专栏 210

[力扣146. LRU 缓存 ](https://leetcode.cn/problems/lru-cache/description/)

LRU是Lease Recently User的缩写,意思是最近 最少使用。比如设计一个文件缓存系统,每个文件有自己的大小和访问时间,文件缓存系统有总的大小,当往这个文件系统中放入新的文件时,如果发现超出文件缓存系统的容量,那么把访问时间最旧的文件删掉。使用LinkedHashmap(HashMap的子类,能够记住插入数据的顺序).

m0_37938791的博客 1363

146 LRU Cache——leetcode

146 LRU Cache 这个基于双向链表+Map表 第一步:分析LRU特点 2大特点: 保持顺序,即访问顺序FIFO。保持顺序的只有顺序类型如链表、数组 快速查找,给定的KEY,能够快速查找的有:二叉搜索树、Hash表、跳表SkipList 再细化各特点   《1》链表特点是:插入、删除、移动都是O(1)操作,随机访问O(N) 《2》数组特点是:插入、删除...

记得别人忘了自己 202
上一篇: Java String Integer互相转
下一篇: LeetCode 116. Populating Next Right Pointers in Each Node
Dale_zero
博客等级 码龄9年 10粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值