码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode--003 LRU cache

时间:2014-07-29 21:16:32      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:style   blog   java   color   os   io   for   art   

bubuko.com,布布扣
1
package leetcode; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 class Node{ 7 int key; 8 int value; 9 Node pre; 10 Node next; 11 Node(int key,int value){ 12 this.key=key; 13 this.value=value; 14 this.pre=null; 15 this.next=null; 16 } 17 } 18 class CacheList{ 19 private Node head; 20 private Node tail; 21 CacheList(int capacity){ 22 head = new Node(0,0); 23 tail = new Node(0,0); 24 head.next=tail; 25 tail.pre=head; 26 } 27 public void insertFirst(Node n){ 28 n.next=head.next; 29 head.next.pre=n; 30 head.next=n; 31 n.pre=head; 32 33 } 34 public Node removeLast(){ 35 Node re = tail.pre; 36 tail.pre.pre.next=tail; 37 tail.pre=tail.pre.pre; 38 return re; 39 } 40 public void shiftToFirst(Node n){ 41 n.pre.next=n.next; 42 n.next.pre=n.pre; 43 insertFirst(n); 44 } 45 } 46 47 public class LRUCache { 48 Map<Integer,Node> map; 49 CacheList cacheList; 50 int capacity; 51 public LRUCache(int capacity) { 52 map = new HashMap<Integer,Node>(); 53 cacheList= new CacheList(capacity); 54 this.capacity=capacity; 55 } 56 57 public int get(int key) { 58 if(map.get(key)==null) 59 return -1; 60 else { 61 Node n= (Node) map.get(key); 62 cacheList.shiftToFirst(n); 63 return n.value; 64 } 65 } 66 67 68 public void set(int key, int value) { 69 if(map.containsKey(key)){ 70 Node come= (Node) map.get(key); 71 come.value=value; 72 cacheList.shiftToFirst(come);; 73 }else{ 74 if(map.size()==capacity){ 75 Node old=cacheList.removeLast(); 76 map.remove(old.key); 77 78 } 79 Node nn=new Node(key,value); 80 cacheList.insertFirst(nn); 81 map.put(key, nn); 82 } 83 84 85 } 86 public static void main(String[] args){ 87 LRUCache l = new LRUCache(1); 88 l.set(2, 1); 89 System.out.println(l.get(2)); 90 l.set(3, 2); 91 System.out.println(l.get(2)); 92 System.out.println(l.get(3)); 93 94 } 95 }

 

leetcode--003 LRU cache,布布扣,bubuko.com

leetcode--003 LRU cache

标签:style   blog   java   color   os   io   for   art   

原文地址:http://www.cnblogs.com/thehappyyouth/p/3876014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!