https://oj.leetcode.com/problems/lru-cache/
这个题目的大体意思是,为LRU设计一种数据结构,使得能够支持get和set操作。
get(key)表示,如果cache里面存在key的value的话,就返回value,否则返回-1;
set(key,value)表示,如果cache里面存在key 的话,就更改key对应的value值,否则就加入新的(key,value)对,
如果(key,value)对的个数超过cache的容量的话,就删除最不经常使用的(key,value)对,加入新的(key,value)对。
首先我使用的是双向链表做的。时间复杂度是O(n^2)。是超时的。
代码如下:
public class LRUCache {
class Node
{
int key;
int value;
Node next;
Node preNode;
public Node() {
// TODO Auto-generated constructor stub
next = null;
}
public Node