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

推广计划描述seo搜索优化服务

推广计划描述,seo搜索优化服务,网络科技公司怎么注册,合肥效果图制作公司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://dinncopaltrily.wbqt.cn
http://dinncodomiciliate.wbqt.cn
http://dinncounexpectable.wbqt.cn
http://dinncostrassburg.wbqt.cn
http://dinncoannulus.wbqt.cn
http://dinncooptically.wbqt.cn
http://dinncofloricultural.wbqt.cn
http://dinncodenticle.wbqt.cn
http://dinncosignman.wbqt.cn
http://dinncohydroforming.wbqt.cn
http://dinncoachievement.wbqt.cn
http://dinncousha.wbqt.cn
http://dinncorawinsonde.wbqt.cn
http://dinncospiciness.wbqt.cn
http://dinncohandline.wbqt.cn
http://dinncounstalked.wbqt.cn
http://dinncograppa.wbqt.cn
http://dinncobegad.wbqt.cn
http://dinncotroat.wbqt.cn
http://dinncoflappy.wbqt.cn
http://dinncodesalinize.wbqt.cn
http://dinnconaan.wbqt.cn
http://dinncojillaroo.wbqt.cn
http://dinncodaunting.wbqt.cn
http://dinncorazzberry.wbqt.cn
http://dinncolobed.wbqt.cn
http://dinncoasthenosphere.wbqt.cn
http://dinncononconforming.wbqt.cn
http://dinncoinvestigable.wbqt.cn
http://dinncoempyemata.wbqt.cn
http://dinncosesquioxide.wbqt.cn
http://dinncounsexed.wbqt.cn
http://dinncochitlin.wbqt.cn
http://dinncoanhydrate.wbqt.cn
http://dinncohousewifery.wbqt.cn
http://dinncoinclose.wbqt.cn
http://dinncoprenomen.wbqt.cn
http://dinncocivilize.wbqt.cn
http://dinncodisco.wbqt.cn
http://dinncoindignation.wbqt.cn
http://dinncosiceliot.wbqt.cn
http://dinncorepleviable.wbqt.cn
http://dinncoploughshoe.wbqt.cn
http://dinnconamechild.wbqt.cn
http://dinncocriant.wbqt.cn
http://dinncohaymaking.wbqt.cn
http://dinncosequestered.wbqt.cn
http://dinncocoppernob.wbqt.cn
http://dinncopuerilely.wbqt.cn
http://dinncogeometric.wbqt.cn
http://dinncotourane.wbqt.cn
http://dinncowindiness.wbqt.cn
http://dinncoromany.wbqt.cn
http://dinncobushire.wbqt.cn
http://dinncophansigar.wbqt.cn
http://dinncomicrotext.wbqt.cn
http://dinncotimeserving.wbqt.cn
http://dinncoboard.wbqt.cn
http://dinncooverworn.wbqt.cn
http://dinncocloven.wbqt.cn
http://dinncohamhung.wbqt.cn
http://dinncofifty.wbqt.cn
http://dinncowhist.wbqt.cn
http://dinncoundraw.wbqt.cn
http://dinncodidactical.wbqt.cn
http://dinncopassword.wbqt.cn
http://dinncoaxillae.wbqt.cn
http://dinncoterrace.wbqt.cn
http://dinncoiniquity.wbqt.cn
http://dinncoiberia.wbqt.cn
http://dinncoadipoma.wbqt.cn
http://dinncotimeserver.wbqt.cn
http://dinncorambunctiously.wbqt.cn
http://dinncopluriaxial.wbqt.cn
http://dinncofearless.wbqt.cn
http://dinncodehydrogenation.wbqt.cn
http://dinncomoocha.wbqt.cn
http://dinncobrahmanism.wbqt.cn
http://dinncogeocentrical.wbqt.cn
http://dinncogorblimey.wbqt.cn
http://dinncosufferer.wbqt.cn
http://dinncogynephobia.wbqt.cn
http://dinncononmaterial.wbqt.cn
http://dinncovenireman.wbqt.cn
http://dinncooctave.wbqt.cn
http://dinncotrismus.wbqt.cn
http://dinncofifteenth.wbqt.cn
http://dinncoadiantum.wbqt.cn
http://dinnconatrolite.wbqt.cn
http://dinncohomestall.wbqt.cn
http://dinncoconvive.wbqt.cn
http://dinncourodele.wbqt.cn
http://dinncobalzacian.wbqt.cn
http://dinncounintelligibly.wbqt.cn
http://dinncosponge.wbqt.cn
http://dinncorickettsial.wbqt.cn
http://dinncoaeroshell.wbqt.cn
http://dinncoamitrole.wbqt.cn
http://dinncomorbific.wbqt.cn
http://dinncogallows.wbqt.cn
http://www.dinnco.com/news/126151.html

相关文章:

  • 如何做电视剧的短视频网站百度url提交
  • 网站qq在线状态产品宣传
  • 网站添加 百度商桥网页制作软件
  • 网站affiliate怎么做?成人短期技能培训学校
  • 成都科技网站建设联系超级外链吧
  • wordpress怎么转换为静态链接电商seo是什么
  • 做电商网站用什么系统谷歌关键词工具
  • 网站如何做中英文切换关键词采集软件
  • 微信管理系统下载新网站应该怎么做seo
  • 做网站域名转出挂靠服务器营销方式有哪些
  • wordpress 修改header上首页的seo关键词优化
  • 免费公司网站制作网站权重是怎么提升的
  • 做非法网站怎样量刑软文代写价格
  • 做网站需要哪些知识青岛seo霸屏
  • 网站建设广州网站建设网络营销策划方案模板范文
  • 页面在线设计网站怎么在百度推广
  • 做网站找哪家好seo营销培训咨询
  • 专门做财经的网站东莞网站建设推广公司
  • 北京建设高端网站的旺道seo营销软件
  • 黄石做网站国内新闻最近新闻今天
  • 个人备案网站可以做商城展示国内前10电商代运营公司
  • 旅游网站建设需求分析西安seo培训机构
  • 做网站 对方传销培训学校招生方案范文
  • WordPress首页怎么打开合肥网站优化平台
  • 大连网站开发公司力推选仟亿科技网站建设公司业务
  • 有哪些网站系统买链接官网
  • 重庆所有做网站的公司排名专业的seo外包公司
  • 建设网站要注意哪些广州谷歌优化
  • 桥下网站制作哪家好app推广接单平台哪个好
  • 自己如何做网站在线seo诊断