zoukankan      html  css  js  c++  java
  • [编程题] lk [面试题 16.25. LRU缓存]

    [编程题] lk 面试题 16.25. LRU缓存

    基础

    LRU:

    ![image-20200801150626694]([编程题] lk [股票类买卖问题(多个情况)--动态规划问题的综合提升].assets/image-20200801150626694.png)

    LFU:

    ![image-20200801150845474]([编程题] lk [股票类买卖问题(多个情况)--动态规划问题的综合提升].assets/image-20200801150845474.png)

    题目

    ![image-20200801155241592]([编程题] lk [股票类买卖问题(多个情况)--动态规划问题的综合提升].assets/image-20200801155241592.png)

    输入输出

    ![image-20200801155259450]([编程题] lk [股票类买卖问题(多个情况)--动态规划问题的综合提升].assets/image-20200801155259450.png)

    代码

    import java.util.*;
    
    class LRUCache {
        int capacity;
        LinkedHashMap<Integer,Integer> map;
    
        public LRUCache(int capacity) {
            this.capacity = capacity;
            this.map = new LinkedHashMap<>();
        }
        
        public int get(int key) {
            if(!map.containsKey(key)){
                return -1;//不存在
            }else{
                //先删除再放到最后
                Integer value = map.remove(key);   //删除旧的位置是会返回删除结果的
                map.put(key, value);  //放入到最新的位置
                return value;
            }
            
        }
        
        public void put(int key, int value) {
            if(map.containsKey(key)){
                //先移除,再放最后
                Integer values = map.remove(key);
                map.put(key, value);
                return;
            }
           
            //先判断是否已满,如果满就把map的size大于容量了就去掉头
            if(map.size()>= capacity){
                map.remove(map.keySet().iterator().next());
                
            }
    
             //再次加入,
             map.put(key, value);
    
        }  
    
    }
    
    
    /**
     * Your LRUCache object will be instantiated and called as such:
     * LRUCache obj = new LRUCache(capacity);
     * int param_1 = obj.get(key);
     * obj.put(key,value);
     */
    
  • 相关阅读:
    ADC测试matlab代码
    matlab的滤波器仿真——低通滤波器与插值滤波器
    PDF转Image最终方案
    多线程和蕃茄炒蛋
    git学习总结
    踩坑了,当前目录问题
    Angular 1.x 升级到 Angular 2
    打造AngularJs2.0开发环境
    发布一个自用的ansi转utf8程序
    用itextsharp打印pdf示例
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13414993.html
Copyright © 2011-2022 走看看