当前位置: 首页 > news >正文

徐州免费模板建站网站建设行业swot分析

徐州免费模板建站,网站建设行业swot分析,群晖wordpress不成功,在线购物网站 模版460. LFU 缓存 解题思路 get操作 返回key对应的val 然后增加对应的freq插入操作 如果key已经存在 直接进行更新 如果不存在 但是容器已经满了 直接进行删除freq最小的Key 之后进行插入 class LFUCache {// key到 val的映射 KVHashMap<Integer,Integer> keyToVal;// …

460. LFU 缓存

解题思路

  • get操作 返回key对应的val 然后增加对应的freq
  • 插入操作 如果key已经存在 直接进行更新 如果不存在 但是容器已经满了 直接进行删除freq最小的Key 之后进行插入

class LFUCache {// key到  val的映射   KVHashMap<Integer,Integer> keyToVal;// 从key到freq的映射  KFHashMap<Integer,Integer> keyToFreq;// 一个频率对应多个 key  舍弃最久未使用的  FKHashMap<Integer,LinkedHashSet<Integer>> freqToKeys;// 记录最小的频率int minFreq;// 记录LFU 缓存的最大容量int cap;public LFUCache(int capacity) {keyToVal = new HashMap<>();keyToFreq = new HashMap<>();freqToKeys = new HashMap<>();this.cap = capacity;this.minFreq = 0;}// 返回对应key的val  然后增加对应的freqpublic int get(int key) {if(!keyToVal.containsKey(key)){return -1;// 返回-1  说明没找到}// 增加key对应的freq + 1  因为查找操作一次increaseFreq(key);return keyToVal.get(key);// 找到val}public void put(int key, int value) {// 如果key 已经存在直接更新if(this.cap <= 0){return;}if(keyToFreq.containsKey(key)){// 修改val即可keyToVal.put(key,value);// 对应的freq加一increaseFreq(key);return;}// key 不存在  需要插入 如果容量没有满 直接插入  如果已满 直接删除 freq最小的keyif(this.cap <= keyToVal.size()){removeMinFreqKey();// 删除freq最小的key}keyToVal.put(key,value);keyToFreq.put(key,1);// 插入KF 表  一种freq对应多种keyfreqToKeys.putIfAbsent(1,new LinkedHashSet<>());freqToKeys.get(1).add(key);// 获取频率  添加一种key// 插入新的key之后最小的freq肯定是1this.minFreq = 1;}private void removeMinFreqKey(){// freq最小的key列表  通过 FKLinkedHashSet<Integer> keyList = freqToKeys.get(this.minFreq);// 获取所有的key// 最先被插入的key就是该被淘汰的keyint deleteKey = keyList.iterator().next();// 更新FK keyList.remove(deleteKey);if(keyList.isEmpty()){// 如果key列表是空的  说明都没有了直接删除freqfreqToKeys.remove(this.minFreq);}// 更新KVkeyToVal.remove(deleteKey);// 更新KFkeyToFreq.remove(deleteKey);}private void increaseFreq(int key){int freq = keyToFreq.get(key);// 更新 KFkeyToFreq.put(key,freq + 1);// 更新FK// 将key 从freq对应的列表中删除freqToKeys.get(freq).remove(key);// 将key加入freq + 1 对应的列表freqToKeys.putIfAbsent(freq + 1,new LinkedHashSet<>());// 创建新的freqToKeys.get(freq + 1).add(key);// 如果对应的列表空if(freqToKeys.get(freq).isEmpty()){freqToKeys.remove(freq);if(freq == this.minFreq){this.minFreq++;}}}
}/*** Your LFUCache object will be instantiated and called as such:* LFUCache obj = new LFUCache(capacity);* int param_1 = obj.get(key);* obj.put(key,value);*/
http://www.yayakq.cn/news/899378/

相关文章:

  • 网站编辑信息怎么做做报名统计的网站
  • wordpress情侣网站源码WordPress文章显示html
  • 网站注意事项北京网站建设公司华网制作作
  • 做外贸的网站简称为什么网站北京商地网站建设公司
  • 凡科网站建设推广常州企业网站建设
  • 秀洲住房与建设局网站黄骅市旅游景点有哪些
  • 哪些网站做国际贸易比较好温州网站建设钱
  • 企业网站的建立如何带来询盘免费企业
  • html5网站开发环境的搭建免费做网站站标
  • 男鞋 东莞网站建设杭州模板网站制作
  • 池州网站开发公司招聘企业邮箱怎么注册自己的账号
  • 双语网站建设现在网站开发技术有哪些
  • 网站建设的功能需求wordpress没有图片放大
  • python做网站方便吗上海网站备案核验单状态查询
  • 模板网站配置文件仿牌网站服务器
  • 自建个人网站大同网站建设哪里好
  • 自己免费做网站有什么用个人网站的设计与实现专业论文图像处理工具
  • 青海网站制作的公司平台运营推广方案
  • 免费自助建站源码汽车网站管理系统
  • iis6.0新发布网站访问速度慢提供微网站制作多少钱
  • 当地做网站贵建筑设计公司logo
  • 烟台网络公司网站建设海淀区手机网站制作服务
  • 中国建设银行贵州分行网站河北邢台房价
  • 瑞安做网站多少钱优化设计六年级上册答案
  • 做网站就是做app网站建设 中企动力 扬州
  • 建站宝盒是什么wordpress怎么优化精简
  • 楚雄微网站建设手机app软件开发软件
  • 平顶山 网站建设公司沈阳正规制作网站公司哪家好
  • 济南做网站需要多少钱soho做网站要写品牌吗
  • 金华建站模板青海企业网站建设