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

如何设计一个网站没灵感网上电商怎么做

如何设计一个网站没灵感,网上电商怎么做,长沙网站制作主要公司,物联网开发平台146. LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&#xff0c…

146. LRU 缓存

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

实现 LRUCache 类:

  • LRUCache(int capacity)正整数 作为容量 capacity 初始化 LRU 缓存
  • int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1
  • void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字。

函数 getput 必须以 O(1) 的平均时间复杂度运行。


前言

好题,想写一下,虽然之前用C++写过一次,但是不太熟悉c++的面向对象,也是云里雾里的,只会写个函数,这次也想熟悉一下golang的container/list。

正文

由于要实现LRU的算法,最主要的就是要实现如何存储最近最少使用的Key,最合适的就是链表,至于根据Key来寻找Value的值,自然就是哈希表了。

于是思路就是这样的:

  1. Get()方法:根据给定的Key,在哈希表中查找,如果不存在,返回-1,如果存在则返回对应的val,并将我们维护的链表的对应的Key-Value更新到链表的最前面。
  2. Put()方法:先查找哈希表中是否存储了这一Key,如果已经存储,则更新Value的值了;如果没有存储,则先确认缓存的数据是否超出了限制,如果没有超出,则直接加入哈希表即可,并将相应的Key-Value推入到链表的最前面;如果超出了,则找到链表的尾部,找到相应的key值,删除哈希表中的对应的Key-Value,并删除链表尾部元素,再将新的Key-Value加入哈希表和链表前方。

代码如下:

type LRUCache struct {capacity intkv       map[int]*list.ElementKeyList  *list.List
}type KV struct {Key   intValue int
}func Constructor(capacity int) LRUCache {return LRUCache{capacity: capacity,kv:       make(map[int]*list.Element),KeyList:  list.New(),}
}func (this *LRUCache) Get(key int) int {if elem, ok := this.kv[key]; ok {this.KeyList.MoveToFront(elem)return elem.Value.(KV).Value}return -1
}func (this *LRUCache) Put(key int, value int) {if node := this.kv[key]; node != nil {node.Value = KV{Key:   key,Value: value,}this.KeyList.MoveToFront(node)return}if this.KeyList.Len() >= this.capacity {oldest := this.KeyList.Back()this.KeyList.Remove(oldest)delete(this.kv, oldest.Value.(KV).Key)}KeyValue := KV{Key: key, Value: value}elem := this.KeyList.PushFront(KeyValue)this.kv[key] = elem
}

结语

Golang里面有这么一个list真是太棒了~

http://www.hkea.cn/news/13673/

相关文章:

  • 佛山新网站建设流程上海网站建设开发公司
  • 做视频网站需要什么软件有哪些百度信息流广告推广
  • 甘肃自助建站系统哪家好重庆seo推广外包
  • c 小说网站开发教程100个商业经典案例
  • 虚拟主机建设二个网站百度开户代理
  • 做内贸现在一般都通过哪些网站搜索关键词网站
  • 沈阳整站优化3d建模培训学校哪家好
  • 网站建设 新手从企业qq怎么申请注册
  • 做图网站有哪些内容怎么创建自己的网址
  • 合肥高端网站开发百度搜索引擎优化指南最新版
  • 制作自己的网站需要什么软件好一个域名大概能卖多少钱
  • 做可动模型的网站如何让自己网站排名提高
  • 网上设计接单赚钱seo服务指什么意思
  • 顺德精品网站建设seo收费
  • 厦门网站设计大概多少钱sem培训班
  • 网站建设的方案西安自助建站
  • 24小时二手表网站seo推广软件排行榜前十名
  • 一个人做网站搜索引擎推广成功的案例
  • 三亚网站建设介绍优化大师有必要花钱吗
  • 徐州网站推广优化seo运营
  • 建设网站需要多长时间百度竞价排名榜
  • wep购物网站开发模板指数型基金
  • 陕西网站开发公司sem 优化软件
  • 个人备案做电影网站营销网络的建设怎么写
  • 做平面设计的一般浏览什么网站北京网站维护公司
  • 南京做网站具体需要多少钱前端培训哪个机构靠谱
  • 网站建设与维护费优云优客百度推广效果怎么样
  • c2c网站建设策划书自己搭建一个网站
  • 哪个网站做服装定制好湖南网站定制
  • 企业可以做哪些网站有哪些内容吗北京网站优化平台