LeetCode-146- LRU 緩存機制

題目描述:運用你所掌握的數(shù)據(jù)結(jié)構(gòu),設(shè)計和實現(xiàn)一個 ?LRU (最近最少使用) 緩存機制 。 實現(xiàn) LRUCache 類:
LRUCache(int capacity) 以正整數(shù)作為容量 capacity 初始化 LRU 緩存
int get(int key) 如果關(guān)鍵字 key 存在于緩存中,則返回關(guān)鍵字的值,否則返回 -1 。
void put(int key, int value) 如果關(guān)鍵字已經(jīng)存在,則變更其數(shù)據(jù)值;如果關(guān)鍵字不存在,則插入該組「關(guān)鍵字-值」。當(dāng)緩存容量達(dá)到上限時,它應(yīng)該在寫入新數(shù)據(jù)之前刪除最久未使用的數(shù)據(jù)值,從而為新的數(shù)據(jù)值留出空間。
進階:你是否可以在 O(1) 時間復(fù)雜度內(nèi)完成這兩種操作?
示例說明請見LeetCode官網(wǎng)。
來源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/lru-cache/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
解法一:LinkedHashMap
因為允許使用已有的數(shù)據(jù)結(jié)構(gòu),LinkedHashMap就支持,所以直接繼承LinkedHashMap即可,當(dāng)然這是偷懶的做法,如果了解LinkedHashMap的實現(xiàn)的話,照著實現(xiàn)就可以了。
【每日寄語】 也許奮斗了一輩子的屌絲也只是個屌絲,也許咸魚翻身了不過是一個翻了面的咸魚,但至少我們有做夢的自尊,而不是丟下一句‘努力無用’心安理得地生活下去。