博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode——LRU Cache
阅读量:5902 次
发布时间:2019-06-19

本文共 1339 字,大约阅读时间需要 4 分钟。

Description:

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 key exists in the cache, otherwise return -1.

set(key, value) - Set or insert the value if the key is not already present. When the cache reached its capacity, it should invalidate the least recently used item before inserting a new item.

题目大意是让设计一个基于LRU的缓存,即最近最后用的保留。

实现LRU缓存有几种方法,链表+HashMap结构实现,LinkedHashMap的实现(继承、组合)、FIFO实现。

具体见我的博客:

这里使用LikedHashMap的组合实现,简单高效。

1 public class LRUCache { 2      3     private int capacity; 4      5     private java.util.LinkedHashMap
cache = new java.util.LinkedHashMap
(capacity,0.75f,true) { 6 @Override 7 protected boolean removeEldestEntry(Map.Entry
eldest) { 8 return size() > capacity; 9 }10 };11 12 public LRUCache(int capacity) {13 this.capacity = capacity;14 }15 16 public int get(int key) {17 Integer res = cache.get(key);18 return res==null?-1:res;19 }20 21 public void set(int key, int value) {22 cache.put(key, value);23 }24 }

网上比较好的答案代码也有上百行,时间也是几百毫秒,这样看起来JDK中的LinkedHashMap的实现还是很高效的。

在不必要的情况下最好不要重复造轮子——大神

转载地址:http://ydkpx.baihongyu.com/

你可能感兴趣的文章
再次讲解js中的回收机制是怎么一回事。
查看>>
绪论-第1章-《数据结构题集》习题解析-严蔚敏吴伟民版
查看>>
【Android进阶学习】shape和selector的结合使用(转)
查看>>
项目经理和产品经理
查看>>
common.css 值得学习的css样式布局
查看>>
C# Index 定义索---引具体使用
查看>>
dnat,snat
查看>>
Controller methods and views
查看>>
李洪强iOS开发之计算数组的最大最小值
查看>>
JavaScript语言基础-环境搭建
查看>>
Swift - 通过叠加UILabel来实现混合的进度条
查看>>
Android 中 Internal Storage 和 External Storage 的区别
查看>>
移动端拖拽(模块化开发,触摸事件,webpack)
查看>>
Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
查看>>
EF-Linq将查询结果转换为List<string>
查看>>
每天一个linux命令(16):which命令
查看>>
关于不同用户操作同一个文件的问题
查看>>
CentOS 6.4 搭建git 服务器
查看>>
spring配置和注解事务同时存在导致的事务嵌套
查看>>
AE要素选择(点选和拉框选择)
查看>>