LRU Cache leetcode
2017-09-16 10:52
323 查看
1.自己想的
public class LRUCache {
public LinkedList<Integer> used=new LinkedList<Integer>();
public Map<Integer, Integer> map=new HashMap<Integer,Integer>();
public int len;
public int capacity;
public LRUCache(int capacity) {
this.capacity = capacity;
len = 0;
}
public int get(int key) {
if(map.containsKey(key)){
//System.out.println(used.toString());
used.remove((Object)key);
used.addFirst(key);
return map.get(key);
}
else{
System.out.println("没得到的元素:"+key);
return -1;
}
}
public void put(int key, int value) {
if(map.containsKey(key)){
map.put(key, value);
used.remove((Object)key);
used.addFirst(key);
}
else{
if(len<capacity){
used.addFirst(key);
map.put(key, value);
len++;
}
else{
int removedKey=used.getLast();
used.removeLast();
System.out.println("map移除结点:"+removedKey);
map.remove(removedKey);
map.put(key, value);
used.addFirst(key);
}
}
}
}
2.基于LinkedHashMap
public class LRUCache ex
a201
tends LinkedHashMap<Integer,Integer>{
private int maxcapacity;
public LRUCache(int capacity) {
super(capacity,0.75f,true);
this.maxcapacity=capacity;
}
public int get(int key) {
Integer vaule=super.get(key);
if(vaule==null)return -1;
else return vaule;
}
public void set(int key, int value) {
super.put(key,value);
}
protected boolean removeEldestEntry(Map.Entry<Integer,Integer> eldest)
{
return size()>maxcapacity;
}
}
public class LRUCache {
public LinkedList<Integer> used=new LinkedList<Integer>();
public Map<Integer, Integer> map=new HashMap<Integer,Integer>();
public int len;
public int capacity;
public LRUCache(int capacity) {
this.capacity = capacity;
len = 0;
}
public int get(int key) {
if(map.containsKey(key)){
//System.out.println(used.toString());
used.remove((Object)key);
used.addFirst(key);
return map.get(key);
}
else{
System.out.println("没得到的元素:"+key);
return -1;
}
}
public void put(int key, int value) {
if(map.containsKey(key)){
map.put(key, value);
used.remove((Object)key);
used.addFirst(key);
}
else{
if(len<capacity){
used.addFirst(key);
map.put(key, value);
len++;
}
else{
int removedKey=used.getLast();
used.removeLast();
System.out.println("map移除结点:"+removedKey);
map.remove(removedKey);
map.put(key, value);
used.addFirst(key);
}
}
}
}
2.基于LinkedHashMap
public class LRUCache ex
a201
tends LinkedHashMap<Integer,Integer>{
private int maxcapacity;
public LRUCache(int capacity) {
super(capacity,0.75f,true);
this.maxcapacity=capacity;
}
public int get(int key) {
Integer vaule=super.get(key);
if(vaule==null)return -1;
else return vaule;
}
public void set(int key, int value) {
super.put(key,value);
}
protected boolean removeEldestEntry(Map.Entry<Integer,Integer> eldest)
{
return size()>maxcapacity;
}
}
相关文章推荐
- Leetcode LRU Cache
- leetcode LRU Cache
- LeetCode LRU Cache
- leetcode LRU Cache python
- LeetCode 之 LRU Cache Java实现
- LeetCode LRU Cache
- leetcode之LRU Cache
- LeetCode LRU Cache
- LeetCode (26) LRU Cache
- #leetcode#LRU Cache
- LeetCode LRU Cache
- leetcode :LRU Cache
- Leetcode LRU Cache
- Leetcode LRU Cache
- leetcode LRU Cache(**)
- leetcode 刷题:LRU cache
- leetcode LRU Cache(高级缓存的最近最少使用算法实现)
- [leetcode]LRU Cache @ Python
- leetcode LRU cache
- leetcode_Design and implement a data structure for Least Recently Used (LRU) cache