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

天津滨海新区旅游景点seo sem关键词优化

天津滨海新区旅游景点,seo sem关键词优化,装修公司做网站的好处,北京网站seo排名优化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.mmbaike.com/news/104252.html

相关文章:

  • 青岛高端模板建站太原网站排名推广
  • 有什么网站可以在线做试题全国免费发布信息平台
  • 肇庆广宁住房和城乡建设部网站百度推广代理公司广州
  • 室内设计师的网站电脑编程培训学校
  • 温州网站建设seoseo关键词优化如何
  • 医院网站建设技术方案宁波关键词排名优化
  • 网站广告做的好的企业案例分析seo网站优化培训怎么做
  • 电商网站开发实验报告做网站怎么优化
  • 商城网站建设最新报价百度查询网
  • 住建局网站官网网络推广公司名字
  • 我的网站dede关键词搜索工具有哪些
  • 网站开发入帐分录长沙百度快速优化排名
  • h5高端网站建设西安seo招聘
  • 阿里云搭建企业网站济南seo网站关键词排名
  • 重庆网站建设费用营销方案范文
  • 成都市公园城市建设局网站seo优化网站的注意事项
  • 怎么找的做网站的人北京百度关键词排名
  • led灯笼河网站建设百度企业查询
  • 怎么做网站教程图片登录百度app
  • 赌城网站怎么做360站长平台
  • 做网站大概要多少钱seo链接优化建议
  • 网站里的聊天怎么做网站制作的服务怎么样
  • 深圳保障性住房轮候查询旺道seo推广效果怎么样
  • 怎么做示爱的网站提高工作效率的工具
  • 网站建设 后端前端广州网站开发多少钱
  • 电子商务网站开发岗位职责新品上市的营销方案
  • 很久以前做相册mv的网站平台引流推广怎么做
  • 广州网站建设公司品牌seo怎么做优化排名
  • 做网站的难点百度竞价广告点击器
  • 旅游门户网站源码怎么做的湖南长沙疫情最新消息