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

如何在百度上建立自己的网站做网站公司大连

如何在百度上建立自己的网站,做网站公司大连,徐州网站建设方案推广,官方网站建设步骤https://leetcode.cn/problems/lru-cache/description/?envTypestudy-plan-v2&envIdtop-100-liked 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓…

https://leetcode.cn/problems/lru-cache/description/?envType=study-plan-v2&envId=top-100-liked

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。

实现 LRUCache 类:
LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存
int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。
void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字。
函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。

小米一面,没刷过题所以栽了,静下来心看看解决方案

题解

题目中涉及到了 查询、插入和删除都要平均时间复杂度O(1),查询想要时间复杂度O(1) 可以用数组,插入删除如果使用数组无法满足要求,因为从数组中删除元素涉及到元素的移动复杂度 O(n), 我们必须使用链表来插入和删除,链表分为单链表和双链表,如果使用单链表删除元素的话还是需要遍历才能找到前后的元素,所以我们使用 哈希表查询 + 双链表操作 的思路

在这里插入图片描述
通过设置head和tail虚节点,避免判空等处理,这样取第一个元素时直接调用 head.next ,取最后一个元素时直接调用 tail.pre

class LRUCache {class Node {int val;int key;Node next;Node pre;public Node(int key, int val) {this.key = key;this.val = val;}}private int mSize;private Map<Integer, Node> map;private Node head;private Node tail;public LRUCache(int size) {mSize = size;map = new HashMap<>();// 技巧处,使用头尾虚节点来处理 空异常head = new Node(-1, -1);tail = new Node(-1, -1);head.next = tail;tail.pre = head;}public int get(int key) {if (!map.containsKey(key)) return -1;Node node = map.get(key);removeNode(node);addToHead(node);return node.val;}public void put(int key, int val) {if (map.containsKey(key)) {removeNode(map.get(key));}Node node = new Node(key, val);map.put(key, node);addToHead(node);// 易错点,超过限制时需要同时移除 双链表 node和 map中的nodeif(map.size() > mSize){Node lastNode = tail.pre;removeNode(lastNode);map.remove(lastNode.key);}}private void addToHead(Node node) {Node first = head.next;head.next = node;node.next = first;first.pre = node;node.pre = head;}private void removeNode(Node node) {Node preNode = node.pre;Node nextNode = node.next;preNode.next = nextNode;nextNode.pre = preNode;}
}
http://www.dtcms.com/a/436628.html

相关文章:

  • 企业网官方网站陕西做网站找谁
  • 网站建设顶部图片html做的网站
  • 上海推广网站公司华为官方商城网站建设方案
  • 网站素材库免费wordpress织梦主题
  • 怎么能自己创建网站建设一个征婚网站的程序
  • 网站开发 在线支付seo的中文含义
  • 信用徐州网站建设情况外发加工网官网
  • 沧州大型网站建设网页版梦幻西游手游官网
  • 万网怎样做网站调试外链代发工具
  • 杭州网站建设公司电话c2c电商网站有哪些
  • 前端做网站兰州市网络设计方案
  • 做厨柜有招聘网站吗百度指数首页
  • 自己做电影网站上海高档网站建设
  • 厦门网站建设代理武安市城乡建设局网站
  • 正能量不良网站推荐2020淘宝网页版本
  • 网站运营一个月多少钱昆山做网站的那家好
  • 个人网站设计模板下载阿联酋网站后缀
  • 北京网站建设问问q778925409霸屏seo优化搜索推广
  • 多语言网站开发家装公司名字
  • 织梦手机网站如何调用网站是广西住房和城乡建设厅
  • 南开集团网站建设石家庄微网站建设公司哪家好
  • 同城网站玩具网站设计
  • 网站开发公司招聘技术人员小学英语教师做应用相关网站
  • 域名做违法网站外贸柒夜网站建设
  • 广州高端网站设计衡阳公司网站建设
  • 这2个代码 找做网站的 安装一下国外产品展示网站源码
  • 中国国内网站建设哪家强百度电视剧风云榜
  • 网站用户黏度找人做网站上线后被投诉侵权
  • 昌吉建设网站wordpress建设网站
  • 中国最厉害的营销策划公司郑州seo课程