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

重庆网站建设哪个好乐陵建设网站

重庆网站建设哪个好,乐陵建设网站,网站整站源码下载工具,曼联vs恩波利比分文章目录 一、题目二、C# 题解 一、题目 设计和构建一个“最近最少使用”缓存#xff0c;该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值)#xff0c;并在初始化时指定最大容量。当缓存被填满时#xff0c;它应该删除最近最少使用的… 文章目录 一、题目二、C# 题解 一、题目 设计和构建一个“最近最少使用”缓存该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值)并在初始化时指定最大容量。当缓存被填满时它应该删除最近最少使用的项目。 它应该支持以下操作 获取数据 get 和 写入数据 put。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中则获取密钥的值总是正数否则返回 -1。   写入数据 put(key, value) - 如果密钥不存在则写入其数据值。当缓存容量达到上限时它应该在写入新数据之前删除最近最少使用的数据值从而为新的数据值留出空间。 示例: LRUCache cache new LRUCache( 2 /* 缓存容量 */ ); cache.put(1, 1); cache.put(2, 2); cache.get(1); // 返回 1 cache.put(3, 3); // 该操作会使得密钥 2 作废 cache.get(2); // 返回 -1 (未找到) cache.put(4, 4); // 该操作会使得密钥 1 作废 cache.get(1); // 返回 -1 (未找到) cache.get(3); // 返回 3 cache.get(4); // 返回 4 点击此处跳转题目。 二、C# 题解 LRU 的思想就是将不常使用的元素优先级设置最低。因此算法规则如下 新数据插入到链表头部当缓存命中即缓存数据被访问数据要移到表头当链表满的时候将链表尾部的数据丢弃。 这里使用数组存储链表结构因为简单高效。 public class LRUCache {private struct Node{public int Key, Value, Left, Right;}private int _cap, _size;private Node[] _list; // 带头结点的双向链表数组实现_list[0] 作为头结点private int FirstPos { // 第一个结点的物理位置存储在 _list[0].Right 中get _list[0].Right;set _list[0].Right value;}private int RearPos { // 尾结点的物理位置存储在 _list[0].Left 中get _list[0].Left;set _list[0].Left value;}private Dictionaryint, int _dic;public LRUCache(int capacity) {_cap capacity;_size 0;_list new Node[_cap 1]; // _list[0] 用作 head 结点存储 first 和 rear 位置_dic new Dictionaryint, int(); // 记录 key 所在结点的位置 pos}public int Get(int key) {// Cache 中存在 key则将其移到表头并返回对应的 valueif (_dic.TryGetValue(key, out int pos)) {MoveToFirst(pos);return _list[pos].Value;}// 不存在返回 -1return -1;}public void Put(int key, int value) {// Cache 中存在 key则将其移到表头并更新 valueif (_dic.TryGetValue(key, out int pos)) {MoveToFirst(pos);_list[pos].Value value;}// 不存在 keyelse {// 链表未满则直接插入新结点if (_size _cap) {AddNode(key, value, _size); // 新结点的物理位置在数组的下一个位置_dic.Add(key, _size); // 添加 key 的记录}// 链表已满需要移除尾结点将新结点插入表头else {int rear RearPos; // 记录此时的尾结点位置ReMoveAt(rear); // 移除尾结点_dic.Remove(_list[rear].Key);AddNode(key, value, rear); // 向表头插入新结点物理位置就存储在刚删掉的尾结点 rear 处_dic.Add(key, rear);}}}// 向表头插入结点结点存储在 _list[pos] 的位置中private void AddNode(int key, int value, int pos) {// 创建结点_list[pos].Key key;_list[pos].Value value;// 插入表头_list[pos].Left 0;_list[pos].Right FirstPos;_list[FirstPos].Left pos;FirstPos pos;}// 将 pos 位置处的结点移到表头private void MoveToFirst(int pos) {ReMoveAt(pos); // 将该结点从链表中移出AddNode(_list[pos].Key, _list[pos].Value, pos); // 再插入表头}// 将 _list[pos] 处的结点从链表中移除private void ReMoveAt(int pos) {int leftPos _list[pos].Left;int rightPos _list[pos].Right;_list[leftPos].Right rightPos;_list[rightPos].Left leftPos;} }/*** Your LRUCache object will be instantiated and called as such:* LRUCache obj new LRUCache(capacity);* int param_1 obj.Get(key);* obj.Put(key,value);*/时间176 ms击败 100.00% 使用 C# 的用户内存64.35 MB击败 85.71% 使用 C# 的用户
http://www.pierceye.com/news/918993/

相关文章:

  • 3营销型网站建设做网站开发最多能做几年
  • 南宁世尊商贸网站建设wordpress给文章设置标题
  • 网站建设与准备微信带颜色的公众号
  • 郑州整站关键词搜索排名技术企业网站建设 信息安全
  • 招聘网站建设计划书网站ftp密码怎么修改
  • 网站的360度全景图片怎么做网站做可信认证多少钱
  • 建立网站图片wordpress msg
  • 南京做中英文网站设计wordpress单位内网做网站
  • 网站有必要备案吗ps课程教学零基础网课
  • 两学一做考学网站有用免费模板网
  • 个人做的网站能备案吗wordpress slides
  • idc网站模板 dedewordpress虚拟资源交易平台
  • 微网站在哪建网站首页默认的文件名一般为
  • 网站内容建设招标做芯片代理哪个网站推广
  • 网站模板图册上海机械网站建设
  • 专业的图纸设计网站怎么做外贸网站需注意哪些
  • 网站推广排名收费标准网址地址
  • 做短裙的视频网站网站生成手机版
  • 李洋网站建设睢宁做网站
  • 网站内的搜索怎么做的小程序游戏开发成本
  • 深圳市住建局造价站装潢设计就业前景
  • 网站上的按钮怎么做ipad做网站服务器
  • 马来西亚的网站后缀3d建模平台
  • 昆山建设工程安监站网站jsp网站开发好书
  • 策划书怎么写 范文泉州seo招聘
  • 网站建设的业务好做吗wordpress 首页静态
  • 做网站销售的话术网络广告策划方案
  • 企智网络网站建设公司社交信息共享网站开发外包
  • 网站建设168网站谁做的比较好
  • 邯郸移动网站建设公司wordpress页脚太高