首页 > 其他 > 详细

leetcode6

时间:2014-03-26 05:22:24      阅读:385      评论:0      收藏:0      [点我收藏+]

好吧,今天晚上赶项目确实是做不了三道题目了,最近项目在网络编程方面有些进步,学到了东西,有时间再积累下来,很深的体会就是,和别人一起写代码,虽然蛋疼但是比自己一个人写要好点,不过发现自己对链表和排序什么的都不太熟练啊,得好好认真练习,加油!

6

LRU Cache

bubuko.com,布布扣
public class LRUCache {
    private int capacity;
    private HashMap<Integer, Node> map;
    private Node firstNode;
    private Node lastNode;

    public LRUCache(int capacity) {
        this.capacity = capacity;
        firstNode = new Node();
        lastNode = new Node();
        firstNode.next = lastNode;
        lastNode.pre = firstNode;
        map = new HashMap<Integer, Node>();
    }

    public int get(int key) {
        if (map.containsKey(key)) {
            Node node = map.get(key);
            moveToHead(node);
            return node.value;

        } else {
            return -1;
        }

    }

    public void set(int key, int value) {
        if (map.containsKey(key)) {
            Node node = map.get(key);
            node.value = value;
            moveToHead(node);
        }else{
            if(map.size()>=capacity){
                if(lastNode!=null&&capacity>0){
                Node dNode = lastNode.pre;
                lastNode.pre = dNode.pre;
                dNode.pre.next = lastNode;
                map.remove(dNode.key);
                Node node = new Node();
                node.key = key;
                node.value = value;
                moveToHead(node);
                map.put(key, node);
                }
            }else{
                Node node = new Node();
                node.key = key;
                node.value = value;
                moveToHead(node);
                map.put(key, node);
            }
            
        }
            
    }

    class Node {
        Node pre;
        Node next;
        int key;
        int value;

    }

    public void moveToHead(Node node) {
        if (node.next != null&&node.pre != null) {
            node.pre.next = node.next;
            node.next.pre = node.pre;
        }
        if (firstNode != null) {
            node.pre = firstNode;
            node.next = firstNode.next;
            firstNode.next.pre = node;
            firstNode.next = node;
        }
        

    }

}
bubuko.com,布布扣

 

 

leetcode6,布布扣,bubuko.com

leetcode6

原文:http://www.cnblogs.com/youkita/p/3624692.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!