国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了[力扣146. LRU 緩存 ](https://leetcode.cn/problems/lru-cache/description/)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

力扣146. LRU 緩存

使用LinkedHashmap(HashMap的子類,能夠記住插入數(shù)據(jù)的順序).
LRU是Lease Recently User的縮寫,意思是最近 最少使用。比如設(shè)計(jì)一個(gè)文件緩存系統(tǒng),每個(gè)文件有自己的大小和訪問時(shí)間,文件緩存系統(tǒng)有總的大小,當(dāng)往這個(gè)文件系統(tǒng)中放入新的文件時(shí),如果發(fā)現(xiàn)超出文件緩存系統(tǒng)的容量,那么把訪問時(shí)間最舊的文件刪掉。
LRU實(shí)現(xiàn)代碼如下文章來源地址http://www.zghlxwxcb.cn/news/detail-681365.html

lass LRUCache {
    int cap;
    LinkedHashMap<Integer, Integer> cache = new LinkedHashMap<>();
    private void makeRecently(int key){
        int val = cache.get(key);//刪除key,重新插入到隊(duì)尾
        cache.remove(key);
        cache.put(key, val);// 刪除 key,重新插入到隊(duì)尾
    }

    public LRUCache(int capacity) {//初始化 LRU 緩存
        this.cap = capacity;
    }
    
    public int get(int key) {// 如果關(guān)鍵字 key 存在于緩存中,則返回關(guān)鍵字的值,否則返回 -1
        if(!cache.containsKey(key)){
            return -1;
        }
        makeRecently(key);//將key設(shè)置為最近使用
        return cache.get(key);
    }
    
    public void put(int key, int val) {//如果關(guān)鍵字 key 已經(jīng)存在,則變更其數(shù)據(jù)值 value ;
        if(cache.containsKey(key)){
            cache.put(key, val);// 修改 key 的值
            makeRecently(key);// 將 key 變?yōu)樽罱褂?/span>
            return;
        }
        if(cache.size() >= this.cap){
            int oldestKey = cache.keySet().iterator().next();//鏈表頭部就是最久未使用的key
            cache.remove(oldestKey);
        }
        cache.put(key,val);//將新的key添加到鏈表尾部
    }
}

到了這里,關(guān)于[力扣146. LRU 緩存 ](https://leetcode.cn/problems/lru-cache/description/)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【LeetCode刷題-鏈表】--146.LRU緩存

    【LeetCode刷題-鏈表】--146.LRU緩存

    方法一:哈希表+雙向鏈表 使用一個(gè)哈希表和一個(gè)雙向鏈表維護(hù)所有在緩存中的鍵值對(duì) 雙向鏈表按照被使用的順序存儲(chǔ)了這些鍵值對(duì),靠近頭部的鍵值對(duì)是最近使用的,而靠近尾部的鍵值對(duì)是最久使用的 哈希表即為普通的哈希映射,通過緩存數(shù)據(jù)的鍵映射到其在雙向鏈表中的

    2024年02月05日
    瀏覽(47)
  • 【LeetCode-中等題】146. LRU 緩存

    【LeetCode-中等題】146. LRU 緩存

    LRU緩存是什么:LRU緩存機(jī)制,你想知道的這里都有 實(shí)現(xiàn) LRU 緩存算法 map —key存 integer value存鏈表節(jié)點(diǎn) ListNode 存 next 和prev 引用 以及 存 key 和value 具體值 圖解:官方圖解 步驟: 定義一個(gè)自定義的雙向鏈表節(jié)點(diǎn)類 DLinkedNode,該類包含 key 和 value 字段,并且具有 prev 和 next 指針

    2024年02月10日
    瀏覽(30)
  • leetcode做題筆記146. LRU 緩存

    請(qǐng)你設(shè)計(jì)并實(shí)現(xiàn)一個(gè)滿足??LRU (最近最少使用) 緩存?約束的數(shù)據(jù)結(jié)構(gòu)。 實(shí)現(xiàn)? LRUCache ?類: LRUCache(int capacity) ?以? 正整數(shù) ?作為容量? capacity ?初始化 LRU 緩存 int get(int key) ?如果? key ?存在于緩存中,則返回的值,否則返回? -1 ?。 void put(int key, int value) ?如果

    2024年02月07日
    瀏覽(25)
  • Leetcode 146. LRU 緩存(Hashmap+雙鏈表)

    請(qǐng)你設(shè)計(jì)并實(shí)現(xiàn)一個(gè)滿足 LRU (最近最少使用) 緩存 約束的數(shù)據(jù)結(jié)構(gòu)。 實(shí)現(xiàn) LRUCache 類: ● LRUCache(int capacity) 以 正整數(shù) 作為容量 capacity 初始化 LRU 緩存 ● int get(int key) 如果 key 存在于緩存中,則返回的值,否則返回 -1 。 ● void put(int key, int value) 如果 key 已

    2024年02月16日
    瀏覽(34)
  • 二刷LeetCode--146.LRU緩存(C++版本),必會(huì)題目

    本題思路:因?yàn)樾枰涗浽氐某鋈腠樞?并且每次訪問之后需要將該節(jié)點(diǎn)提到最前面,因此需要使用雙向鏈表(單鏈表不方便刪除操作),而為了可以在常量時(shí)間復(fù)雜度內(nèi)找到對(duì)應(yīng)的元素,我們需要使用哈希表,將每一個(gè)插入的元素在哈希表中進(jìn)行記錄.哈希表的key就是插入的key,而哈希

    2024年02月13日
    瀏覽(21)
  • 每日兩題 / 142. 環(huán)形鏈表 II & 146. LRU 緩存(LeetCode熱題100)

    每日兩題 / 142. 環(huán)形鏈表 II & 146. LRU 緩存(LeetCode熱題100)

    142. 環(huán)形鏈表 II - 力扣(LeetCode) 用哈希記錄走過的節(jié)點(diǎn)即可 146. LRU 緩存 - 力扣(LeetCode) O ( 1 ) O(1) O ( 1 ) 地查找并修改kv結(jié)構(gòu),用unordered_map即可解決 問題是題目要求:哈希表容量有限,超出容量時(shí),將刪除最久未訪問的kv 那么關(guān)鍵就在于:如何用數(shù)據(jù)結(jié)構(gòu)表示訪問的先后順

    2024年04月16日
    瀏覽(26)
  • 146. LRU 緩存

    請(qǐng)你設(shè)計(jì)并實(shí)現(xiàn)一個(gè)滿足 LRU (最近最少使用) 緩存 約束的數(shù)據(jù)結(jié)構(gòu)。 實(shí)現(xiàn) LRUCache 類: LRUCache(int capacity) 以 正整數(shù) 作為容量 capacity 初始化 LRU 緩存 int get(int key) 如果 key 存在于緩存中,則返回的值,否則返回 -1 。 void put(int key, int value) 如果 key 已經(jīng)存在,

    2024年02月12日
    瀏覽(28)
  • 146. LRU Cache最近最少使用 (LRU) 緩存 Least Recently Used (LRU) cache.

    Design a data structure that follows the constraints of a Least Recently Used (LRU) cache. Implement the LRUCache class: LRUCache(int capacity) Initialize the LRU cache with positive size capacity. int get(int key) Return the value of the key if the key exists, otherwise return -1. void put(int key, int value) Update the value of the key if the key exists. O

    2024年02月10日
    瀏覽(34)
  • LeetCode刷題---LRU緩存

    LeetCode刷題---LRU緩存

    LRU是Least Recently Used的縮寫,即最近最少使用,是一種內(nèi)存管理算法,也可以用作緩存淘汰策略。 這種算法的核心思想是:如果數(shù)據(jù)最近被訪問過,那么將來被訪問的幾率也更高。 因此,當(dāng)內(nèi)存或緩存容量有限,需要淘汰部分?jǐn)?shù)據(jù)時(shí),LRU算法會(huì)優(yōu)先淘汰那些最長時(shí)間未被訪問

    2024年02月22日
    瀏覽(24)
  • 【leetcode100-035】【鏈表/哈希鏈表】LRU緩存

    【題干】 請(qǐng)你設(shè)計(jì)并實(shí)現(xiàn)一個(gè)滿足??LRU (最近最少使用) 緩存?約束的數(shù)據(jù)結(jié)構(gòu)。 實(shí)現(xiàn)? LRUCache ?類: LRUCache(int capacity) ?以? 正整數(shù) ?作為容量? capacity ?初始化 LRU 緩存 int get(int key) ?如果? key ?存在于緩存中,則返回的值,否則返回? -1 ?。 void put(int key, in

    2024年02月01日
    瀏覽(57)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包