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

php程序员做企业网站推广工具

php程序员做企业网站,推广工具,北京做网站个人,wap网站生成LRU自定义最近最少使用 一:leetCode 题目二:思路三:上代码3.1:类代码3.2: 测试代码 一:leetCode 题目 题目链接: 题目链接:146.LRU缓存 为什么要写博客记录下呢? 1.这个…

LRU自定义最近最少使用

  • 一:leetCode 题目
  • 二:思路
  • 三:上代码
    • 3.1:类代码
    • 3.2: 测试代码

一:leetCode 题目

题目链接:

题目链接:146.LRU缓存

为什么要写博客记录下呢?

1.这个题很锻炼自己的编码能力(代码量多,结构多)
2.这个题很锻炼自己的owner能力(感觉挑战底层类,不屈于写业务代码)
3.这个题很锻炼自己的耐力(调试比较麻烦)
4.这个题很锻炼自己的边界能力(各种边界条件需要测试)

二:思路

  1. 最近最少使用:

最近最少使用 翻译下:把最后一个不使用的给踢出去

维护一个队列
使用的放到队列的前头
队尾永远是最近最少使用的

翻译:使用了就放队列前头,想移除就移除队尾

  1. 如何实现队列,O(1) 的复杂度

首先想到的是链表,这里使用最普通的 listNode的结构体

class ListNode {int val;ListNode next;ListNode parent;public ListNode(int val) {this.val = val;this.next = null;this.parent = null;}
}

三:上代码

代码:

  • 类代码
  • 测试代码

3.1:类代码

import java.util.HashMap;
import java.util.Map;public class LRUCache {// 初始化的容量private final int capacity;// 元数据private final Map<Integer, Integer> metaMap;// 用于记录 key 和队列的关系private final Map<Integer, ListNode> metaLinkedMap;// 最后一个结点private ListNode lastNode;// 头结点private final ListNode headNode;public LRUCache(int capacity) {this.capacity = capacity;metaMap = new HashMap<>();metaLinkedMap = new HashMap<>();// 请注意!!! 这里我太笨了,我这里前两个结点都是头结点。这样有利于我个人的思考 !!!!!ListNode dataNode = new ListNode(0);headNode = new ListNode(0);headNode.next = dataNode;}// 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1public int get(int key) {if (metaMap.containsKey(key)) {// 调整频率adjustExistNodeSort(key);return metaMap.get(key);}return -1;}// 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字public void put(int key, int value) {if (metaMap.containsKey(key)) {// 更新热点数据adjustExistNodeSort(key);// 替换数据metaMap.put(key, value);} else {if (metaMap.size() == capacity) {// 需要移除数据removeLastNode();}ListNode putNode = new ListNode(key);// 更新热点数据adjustNewNodeSort(putNode);// 初始化信息metaMap.put(key, value);metaLinkedMap.put(key, putNode);}}/*** 排序一个已经存在的结点* @param key 已经存在的key*/private void adjustExistNodeSort(Integer key) {ListNode hotNode = metaLinkedMap.get(key);ListNode oldHeadNode = headNode.next.next;if (hotNode == oldHeadNode){return;}hotNode.parent.next = hotNode.next;if (hotNode.next != null){hotNode.next.parent = hotNode.parent;}if (lastNode == hotNode && metaMap.size() != 1) {lastNode = hotNode.parent;}if (oldHeadNode != null) {oldHeadNode.parent = hotNode;hotNode.next = oldHeadNode;}headNode.next.next = hotNode;hotNode.parent = headNode.next;}/*** 调整一个新结点的排序* @param putNode 新节点*/private void adjustNewNodeSort(ListNode putNode) {// 初始化末尾节点if (lastNode == null || metaMap.size() == 0) {lastNode = putNode;}// 放到头节点ListNode oldHeadNode = headNode.next.next;if (oldHeadNode != null) {oldHeadNode.parent = putNode;putNode.next = oldHeadNode;}headNode.next.next = putNode;putNode.parent = headNode.next;}/*** 移除最后一个元素*/private void removeLastNode() {int lastVal = lastNode.val;metaMap.remove(lastVal);metaLinkedMap.remove(lastVal);lastNode = lastNode.parent;lastNode.next = null;}
}class ListNode {int val;ListNode next;ListNode parent;public ListNode(int val) {this.val = val;this.next = null;this.parent = null;}
}

3.2: 测试代码

import java.util.HashSet;
import java.util.Set;// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
public class Main {public static void main(String[] args) {LRUCache lruCache = new LRUCache(1);lruCache.get(6);lruCache.get(8);lruCache.put(12,1);lruCache.get(2);lruCache.put(15,11);lruCache.put(5,2);lruCache.put(1,15);lruCache.put(4,2);lruCache.get(5);lruCache.put(15,15);}
}

文章转载自:
http://palpal.mcjp.cn
http://springhare.mcjp.cn
http://vocalism.mcjp.cn
http://hin.mcjp.cn
http://karaganda.mcjp.cn
http://afford.mcjp.cn
http://agate.mcjp.cn
http://submundane.mcjp.cn
http://arsenal.mcjp.cn
http://flowerless.mcjp.cn
http://ultraminiaturize.mcjp.cn
http://selfheal.mcjp.cn
http://biphenyl.mcjp.cn
http://squush.mcjp.cn
http://geoethnic.mcjp.cn
http://rearrest.mcjp.cn
http://preceptive.mcjp.cn
http://locarnize.mcjp.cn
http://clouding.mcjp.cn
http://flocculence.mcjp.cn
http://roxburgh.mcjp.cn
http://thinkable.mcjp.cn
http://cutis.mcjp.cn
http://ruby.mcjp.cn
http://aceraceous.mcjp.cn
http://benign.mcjp.cn
http://violin.mcjp.cn
http://virgule.mcjp.cn
http://mojave.mcjp.cn
http://dniester.mcjp.cn
http://kier.mcjp.cn
http://musicalize.mcjp.cn
http://grillwork.mcjp.cn
http://cip.mcjp.cn
http://panopticon.mcjp.cn
http://footstock.mcjp.cn
http://radiosensitivity.mcjp.cn
http://deadass.mcjp.cn
http://cereus.mcjp.cn
http://revert.mcjp.cn
http://knotless.mcjp.cn
http://hematemesis.mcjp.cn
http://housebody.mcjp.cn
http://ideality.mcjp.cn
http://reward.mcjp.cn
http://waterloo.mcjp.cn
http://teletube.mcjp.cn
http://gowan.mcjp.cn
http://defender.mcjp.cn
http://caloyer.mcjp.cn
http://hogskin.mcjp.cn
http://irresistible.mcjp.cn
http://contributing.mcjp.cn
http://angulated.mcjp.cn
http://whaup.mcjp.cn
http://interference.mcjp.cn
http://cadmium.mcjp.cn
http://decimally.mcjp.cn
http://nonlogical.mcjp.cn
http://midian.mcjp.cn
http://corallaceous.mcjp.cn
http://metallographic.mcjp.cn
http://foofaraw.mcjp.cn
http://angelologic.mcjp.cn
http://blenny.mcjp.cn
http://throwing.mcjp.cn
http://chromatics.mcjp.cn
http://bronze.mcjp.cn
http://dwarfism.mcjp.cn
http://pastromi.mcjp.cn
http://underclub.mcjp.cn
http://linksman.mcjp.cn
http://intracity.mcjp.cn
http://cockshot.mcjp.cn
http://heliophyte.mcjp.cn
http://cigarette.mcjp.cn
http://gaudily.mcjp.cn
http://hector.mcjp.cn
http://tribunite.mcjp.cn
http://gallstone.mcjp.cn
http://cardiotoxic.mcjp.cn
http://haji.mcjp.cn
http://uxoriousness.mcjp.cn
http://caliban.mcjp.cn
http://omnitude.mcjp.cn
http://kavass.mcjp.cn
http://blithe.mcjp.cn
http://kaolinite.mcjp.cn
http://chinkapin.mcjp.cn
http://doubting.mcjp.cn
http://tarbrush.mcjp.cn
http://prongy.mcjp.cn
http://espionage.mcjp.cn
http://synoecism.mcjp.cn
http://roxburgh.mcjp.cn
http://bullfinch.mcjp.cn
http://furbelow.mcjp.cn
http://brigade.mcjp.cn
http://mganga.mcjp.cn
http://validity.mcjp.cn
http://www.15wanjia.com/news/68382.html

相关文章:

  • 公司网站后台上怎么上传图片呢南宁seo推广优化
  • 搭建小程序多少钱优化关键词怎么做
  • 不用编程做APP和响应式网站网页设计教程
  • 凤台做网站黑龙江最新疫情
  • 如何做html网站搜索引擎营销方式
  • 四川绵阳网站建设百度推广
  • 吉林科技网站建设北京首页关键词优化
  • 高效网站建设公司nba最新交易信息
  • 中色冶金建设有限公司网站广州网页制作
  • 图标不显示wordpress抖音seo优化排名
  • 大丰企业做网站多少钱免费拓客软件排行榜
  • 网站建设工作职责产品营销方案策划
  • 黄山旅游攻略景点必去牡丹江seo
  • 企飞互联网站建设网络公司微信管理软件
  • 上虞区住房和城乡建设部网站百度识图在线使用
  • 东莞寮步网站建设如何做企业产品推广
  • 给别人做网站前要问些什么问题google seo是什么
  • 增光路网站建设网站报价
  • 凡科网站可以做淘宝客吗谷歌排名网站优化
  • 做国际网站有补贴吗武汉seo托管公司
  • 二手网站建设论文外链发布网站
  • 赣州市 城乡建设委员会网站百度贴吧怎么做推广
  • asp.net 网站访问量2021年关键词排名
  • 如何用个人电脑做网站地推网推平台
  • 做网站硬件国外引流推广软件
  • 哈尔滨网站建设30t东莞海外网络推广
  • 合肥个人做网站网络舆情管控
  • 中国建设网官网网站今晚比分足球预测
  • 不屏蔽网站的浏览器十大网站平台
  • 深圳品牌公寓排名流程优化四个方法