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

公司网站后台怎么上传图片crm软件管理系统

公司网站后台怎么上传图片,crm软件管理系统,前端培训多少钱,wordpress 新闻列表题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返…

题目

请你设计并实现一个满足 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) 的平均时间复杂度运行。

示例:

输入
[“LRUCache”, “put”, “put”, “get”, “put”, “get”, “put”, “get”, “get”, “get”]
[[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]
输出
[null, null, null, 1, null, -1, null, -1, 3, 4]

解释
LRUCache lRUCache = new LRUCache(2);
lRUCache.put(1, 1); // 缓存是 {1=1}
lRUCache.put(2, 2); // 缓存是 {1=1, 2=2}
lRUCache.get(1); // 返回 1
lRUCache.put(3, 3); // 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}
lRUCache.get(2); // 返回 -1 (未找到)
lRUCache.put(4, 4); // 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}
lRUCache.get(1); // 返回 -1 (未找到)
lRUCache.get(3); // 返回 3
lRUCache.get(4); // 返回 4

提示:

1 <= capacity <= 3000
0 <= key <= 10000
0 <= value <= 105
最多调用 2 * 105 次 get 和 put

解决思路

使用Map加双链表实现即可,参考Java里LinkedHashMap

解决方法

    class Node(key: Int, value: Int) {var pre: Node? = nullvar nex: Node? = nullvar value: Intvar key: Intinit {this.value = valuethis.key = key}}class LRUCache(capacity: Int) {var map = mutableMapOf<Int, Node>()private var dumpHead: Node = Node(-1, -1)private var dumpTail: Node = Node(-1, -1)var mCapability = capacityinit {dumpHead.nex = dumpTaildumpTail.pre = dumpHead}fun get(key: Int): Int {val value = map.getOrDefault(key, null)if (value != null) {updateNodeToHeadNext(map[key])}return value?.value ?: -1}fun put(key: Int, value: Int) {if (map.containsKey(key)) {updateNodeToHeadNext(map[key])map[key]!!.value = value} else {val node = Node(key, value)dumpHead.nex!!.pre = nodenode.nex = dumpHead.nexdumpHead.nex = nodenode.pre = dumpHeadmap[key] = node}while (map.size > mCapability) {dumpTail.pre?.let {it.pre!!.nex = dumpTaildumpTail.pre = it.premap.remove(it.key)}}}private fun updateNodeToHeadNext(find: Node?) {if (find != null) {find.nex!!.pre = find.prefind.pre!!.nex = find.nexdumpHead.nex!!.pre = findfind.nex = dumpHead.nexdumpHead.nex = findfind.pre = dumpHead}}}

偷懒版:

    class CacheMap(initialCapacity: Int, loadFactor: Float, accessOrder: Boolean) :LinkedHashMap<Int, Int>(initialCapacity, loadFactor, accessOrder) {private val initC = initialCapacityoverride fun removeEldestEntry(eldest: MutableMap.MutableEntry<Int, Int>?): Boolean {return size > initC}}class LRUCache(capacity: Int) {var map = CacheMap(capacity, 0.5f, true)fun get(key: Int): Int {return map.getOrDefault(key,-1)}fun put(key: Int, value: Int) {map[key] = value}}

总结

1.事非经过不知难。 本以为很简单 结果还是一个小时下来了

2.哎 之前面试过这个题 但是自己直接说用LinkedHashMap

3.为了保证时间复杂度为O(1),Map 里 value 为 Node
方便对Node进行调整。

http://www.yayakq.cn/news/992762/

相关文章:

  • 北京建设交易工程信息网站手机网站 微信平台
  • 建立免费公司网站深圳市工程建设交易中心官网
  • 网站外的seo新媒体宣传推广方案
  • 教做黏土手工的网站安徽黄山旅游攻略
  • 门户网站制作全包运城seo招聘
  • 是可以随时修改网站内容的.360推广助手
  • 北京网站制作闪快怎么做类似淘宝网站吗
  • 网站广告推广价格珠宝网站官网建设需求
  • 做自己的首席安全官的网站app定制开发制作
  • 查询网站是哪家公司做的东莞轻推网络科技有限公司
  • 网站建设策划案模板手机网站菜单设计模板
  • 谷歌翻译做多语言网站找哪个网站做摩配
  • 如何在网站上做网上亮照做空比特币的网站
  • html简单动画代码seo结算系统
  • 中国建设银行威海分行网站韩国设计教程网站
  • 建站一条龙的服务流程是怎么样的wordpress恢复源代码
  • 望野 王绩网站优化快速排名软件
  • 山东住房和城乡建设局网站首页百度联盟 网站备案信息
  • 驻马店百牛网站建设网站模板库免费
  • 网站建设的可用性免费网站后台
  • 男女做羞羞漫画网站颜色搭配的网站
  • 海南专业做网站的公司wordpress do_action 返回值
  • 网站制作培训机构微信怎么开店
  • 中山网站百度优化宁波建设网证书查询平台官网
  • 南阳企业网站wordpress去
  • 秦皇岛手机网站制作公司如何建设自己的网站 知乎
  • google网站dw做的网站解压后为什么没了
  • 没网站做推广自己电脑上做的网站 怎么让别人看
  • 安庆专业网站建设公做信息图的免费网站
  • 会计信息网站建设的意思网站与微信对接