`
frank-liu
  • 浏览: 1682124 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: 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 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.

原问题链接:https://leetcode.com/problems/lru-cache/

 

问题分析

  这个问题的思路是希望能够设计一个类似于cache的数据结构,这个结构能够按照给定的大小构造。同时在进行get操作的时候能够查找到匹配的值,如果没有就返回-1。 set操作的时候则将将给定的值加入到里面,但是如果元素数量超过容量时,需要删除目前最不常用的元素。

  如果从头开始设计这个结构的话会比较复杂,当然,这里有一个偷懒取巧的办法,就是利用java类库里现成的LinkedHashMap。它本身就已经支持这种访问了。

  这是一种详细的实现代码:

 

import java.util.LinkedHashMap;

public class LRUCache {
    private LinkedHashMap<Integer, Integer> map;
    private final int CAPACITY;
    public LRUCache(int capacity) {
        CAPACITY = capacity;
        map = new LinkedHashMap<Integer, Integer>(capacity, 1.0f, true){
            protected boolean removeEldestEntry(Map.Entry eldest) {
                return size() > CAPACITY;
            }
        };
    }
    public int get(int key) {
        return map.getOrDefault(key, -1);
    }
    public void set(int key, int value) {
        map.put(key, value);
    }
}
1
8
分享到:
评论

相关推荐

    lrucacheleetcode-Leetcode-LRU-cache:146.LRU缓存

    Leetcode-LRU-cache LRU缓存 设计和实现最近最少使用 (LRU) 缓存的数据结构。 它应该支持以下操作:get 和 put。 get(key) - 如果键存在于缓存中,则获取键的值(将始终为正),否则返回 -1。 put(key, value) - ...

    javalruleetcode-LRU_cache:LRU_cache

    LRU_cache (Leetcode 146) 设计和实现最近最少使用 (LRU) 缓存的数据结构。 它应该支持以下操作:get 和 set。 get(key) – 如果键存在于缓存中,则获取键的值(将始终为正),否则返回 -1。 set(key, value) – ...

    lrucacheleetcode-leetcode:leetcode

    在LeetCode上,有一个经典的LRU Cache问题(问题编号146),要求设计一个数据结构,模拟LRU Cache的行为。这个问题通常用关联数组(哈希表)和双向链表来解决,因为这两种数据结构可以快速地完成查找、插入和删除...

    lrucacheleetcode-JS-Leetcode:Leetcode练习记录,按照数据结构与算法进行分类,专项练习,一道一道搞定,理解,

    lru cache leetcode 数据结构与算法学习 Leetcode 精选百题题解,按照数据结构与算法进行分类,专项练习,一道一道搞定,理解,融会贯通,基本上就无敌了! 数据结构与算法知识图谱 题目类型 数学 :rainbow::rainbow:...

    lrucacheleetcode-leetcode-LRU-Cache:我的leetcodeLRU缓存问题的解决方案

    lru缓存leetcode 问题描述 设计一个遵循最近最少使用 (LRU) 缓存约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity)使用正大小容量初始化 LRU 缓存。 int get(int key)如果键存在则返回键的值,否则返回-1...

    lrucacheleetcode-lru_cache:lru_cache

    lru缓存leetcode LRU缓存 受启发的简单 LRU 缓存实现 发展 建造 ./gradlew build 测试 ./gradlew test 使用示例 LRUCache&lt; String , String &gt; cache = new LRUCache&lt;&gt; ( 2 /* capacity */ ); cache . put( " ...

    LeetCode 146 LRU Cache的实现 Pyhton3

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

    lrucacheleetcode-leetcode:leetcodeAC题目

    描述中的"lru cache leetcode leetcode AC题目汇总"进一步确认了这个压缩包包含的是关于LRU缓存的LeetCode解题集合,而且所有题目都已经实现了正确答案。"目前AC题目有: other AC题目 打印沙漏"可能是指除了LRU缓存...

    lrucacheleetcode-javascript-LeetCode:javascript-LeetCode

    lru cache leetcode LeetCode LeetCode 经典题目汇总 ( javascript实现 ) 刷LeetCode有一段时间了,下面记录一些经典的题目, 用来以后复习回顾使用. LeetCode: () 常用数据结构实现 LeetCode题目 链表 栈 队列 堆 ...

    lrucacheleetcode-leetcode:力码解决方案

    总之,这个"lrucacheleetcode-leetcode"项目是一个关于LeetCode平台LRU Cache问题的解决方案集合,通过学习其中的代码,我们可以深入了解LRU缓存的原理和实现,同时也可以借鉴开源社区的最佳实践,提升自己的编程和...

    lrucacheleetcode-LRU_Cache:LRU_Cache是一个leetcode问题,需要深入了解数据结构。在LRU_Cache

    LRU_Cache是LeetCode的一个经典问题,旨在考察开发者对数据结构和算法的理解,特别是对LRU缓存机制的实现。 在这个问题中,你需要设计一个LRU缓存,它支持以下操作: 1. `get(key)`:如果键`key`存在于缓存中,则...

    lrucacheleetcode-LeetCode:复制和思考

    lru cache leetcode LeetCode copy and think 加油学习 1. 时间轴 时间 题目 描述 知识点 20200525 146. LRU Cache 数据结构 双向链表的删除和插入节点 20200525 190. Reverse Bits 二进制位数 二进制的&和&gt;&gt; &lt;&...

    lrucacheleetcode-LeetCode:用Python解决LeetCode问题

    lru缓存leetcode 力码 LeetCode 问题的解决方案 日期 问题 11/14/2018 2 两个数相加两个链表的160度交集 11/15/2018 第220话 以前的 -------------------算法----------------- 4.9 136单号104 二叉树的最大深度283 ...

    lrucacheleetcode-leetcode:leetcode算法学习记录golang版

    cache leetcode Leetcode 参考: leetcode 经典题目解析&golang版代码 简单难度 中等难度 困难难度 算法专项 KMP 算法 动态规划: 887. 鸡蛋掉落 5. 最长回文子串 494. 目标和 322. 零钱兑换 279. 完全平方数 198. ...

    LeetCode:关于LeetCode.com和ACM的一些算法问题

    LeetCode一些 LeetCode ... LRU Cache题目: | 源码:标签:哈希表,双向链表难度:中等 / Medium212. Word-Search-II题目: | 英文站源码:./problem-0212-Word-Search-II/标签:哈希表,双向链表难度:困难 / Hard

    lrucacheleetcode-LeetCode:LeetCode刷题

    lru cache leetcode LeetCode 剑指offer LeetCode解题记录(python) 2018.9.19 两数之和(Two Sum) 2018.9.19 两数相加(Add Two Numbers) 2018.9.25 翻转二叉树(Invert Binary Tree) 2018.9.25 环形链表...

    lrucacheleetcode-beihu-leetcode:力扣算法

    lru cache leetcode Beihu-LeetCode LeetCode Algorithm 数据结构 Array Stack LinkedList Queue/PriorityQueue(heap) Set/Disjoint Set Map/HashTable Tree/Binary Search Tree/Spanning tree Trie 字母树 Bloom...

    lrucacheleetcode-boy-leetcode:leetcode练习

    lru cache leetcode boy-leetcode leetcode practise | 练习 LeetCode 题目 + 分类 + 公司归档 切题四件套 Clarification 明确题目意思 Possible solutions compare(time/space) optimal(加强) Coding(多写) Test ...

    leetcode:LeetCode解决方案

    "哈希表实现LRU缓存策略"(LRU Cache)要求设计一个最近最常使用的缓存系统。 6. **动态规划**:这是一种解决最优化问题的方法,通过构建状态转移方程来求解。"背包问题"(Knapsack Problem)是典型的动态规划题目...

    lrucacheleetcode-LeetCode:刷题整理

    lru cache leetcode LeetCode刷题 题号是LeetCode原题,题目是自己的解答 Easy 题号 题目 Tags Star Company HashMap :star: :star: :star: Integer :star: :star: String :star: String、Stack :star: :star: :star...

Global site tag (gtag.js) - Google Analytics