首页 > 代码库 > Leetcode- LRUCache
Leetcode- LRUCache
关键是搞懂题目(不知道LRUCache的只能自己google了)。
然后用双向链表来模拟cache被get和set。但是naive implementation会exceed time limit。所以最大的关键是用一个HashMap来记录key在链表中的位置,这样子每次查询是O(1)的时间,否则O(n)。
这个也是很经典的用Map来加速双向链表查询的思路(前提是key要唯一)。
import java.util.*; public class LRUCache { Map<Integer, DoubleLinkedListNode> hmap = new HashMap<Integer, DoubleLinkedListNode>(); DoubleLinkedListNode head = null; DoubleLinkedListNode tail = null; int capa; public LRUCache(int capacity) { this.capa = capacity; } public int get(int key) { if (hmap.containsKey(key)) { DoubleLinkedListNode tnode = hmap.get(key); tnode = removeNode(tnode); pushFront(tnode); return tnode.value; } return -1; } public void set(int key, int value) { if (hmap.containsKey(key) == true) { DoubleLinkedListNode tnode = hmap.get(key); tnode.value = http://www.mamicode.com/value;>Leetcode- LRUCache
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。