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

漳州建网站前十名少儿编程机构

漳州建网站,前十名少儿编程机构,python基础教程第二版课后答案,网站建设找客户渠道题目#xff1a; 有 n 个 (id, value) 对#xff0c;其中 id 是 1 到 n 之间的一个整数#xff0c;value 是一个字符串。不存在 id 相同的两个 (id, value) 对。 设计一个流#xff0c;以 任意 顺序获取 n 个 (id, value) 对#xff0c;并在多次调用时 按 id 递增的顺序…题目 有 n 个 (id, value) 对其中 id 是 1 到 n 之间的一个整数value 是一个字符串。不存在 id 相同的两个 (id, value) 对。 设计一个流以 任意 顺序获取 n 个 (id, value) 对并在多次调用时 按 id 递增的顺序 返回一些值。 实现 OrderedStream 类 OrderedStream(int n) 构造一个能接收 n 个值的流并将当前指针 ptr 设为 1 。String[] insert(int id, String value) 向流中存储新的 (id, value) 对。存储后 如果流存储有 id ptr 的 (id, value) 对则找出从 id ptr 开始的 最长 id 连续递增序列 并 按顺序 返回与这些 id 关联的值的列表。然后将 ptr 更新为最后那个  id 1 。 否则返回一个空列表。 示例 输入 [OrderedStream, insert, insert, insert, insert, insert] [[5], [3, ccccc], [1, aaaaa], [2, bbbbb], [5, eeeee], [4, ddddd]] 输出 [null, [], [aaaaa], [bbbbb, ccccc], [], [ddddd, eeeee]]解释 OrderedStream os new OrderedStream(5); os.insert(3, ccccc); // 插入 (3, ccccc)返回 [] os.insert(1, aaaaa); // 插入 (1, aaaaa)返回 [aaaaa] os.insert(2, bbbbb); // 插入 (2, bbbbb)返回 [bbbbb, ccccc] os.insert(5, eeeee); // 插入 (5, eeeee)返回 [] os.insert(4, ddddd); // 插入 (4, ddddd)返回 [ddddd, eeeee]提示 1 n 10001 id nvalue.length 5value 仅由小写字母组成每次调用 insert 都会使用一个唯一的 id恰好调用 n 次 insert 解法基于数组和指针的流式处理 解题思路 我们需要设计一个数据结构能够按 id 递增的顺序返回 (id, value) 对的值。由于 id 是唯一的且范围固定1 到 n我们可以使用一个数组来存储这些值并通过一个指针 ptr 来跟踪当前可以返回的最小 id。 具体步骤如下 初始化 使用一个大小为 n 1 的数组 stream 来存储 (id, value) 对。数组的索引直接对应 id方便快速访问。 初始化指针 ptr 为 1表示下一个需要返回的 id 是 1。 插入操作 将 (idKey, value) 对存储到数组 stream 的 idKey 位置。 检查当前指针 ptr 是否指向一个已经存储了值的 id。如果是则从 ptr 开始依次检查连续的 id 是否已经存储并将对应的 value 加入结果列表。 更新指针 ptr 为最后一个连续 id 的下一个位置。 返回结果列表。 代码实现 class OrderedStream { private:vectorstring stream; // 用于存储 (id, value) 对的数组int ptr; // 当前指针指向下一个应该返回的 idpublic:OrderedStream(int n) {stream.resize(n1);ptr 1;}vectorstring insert(int idKey, string value) {stream[idKey] value;vectorstring result;// 如果当前指针指向的 id 已经存储了值则返回从 ptr 开始的最长连续递增序列while (ptr stream.size() !stream[ptr].empty()) {result.push_back(stream[ptr]);ptr;}return result;} };/*** Your OrderedStream object will be instantiated and called as such:* OrderedStream* obj new OrderedStream(n);* vectorstring param_1 obj-insert(idKey,value);*/ 复杂度分析 时间复杂度 每次调用 insert 方法时最坏情况下需要遍历从 ptr 开始的所有连续 id时间复杂度为 O(k)其中 k 是连续 id 的数量。 总体时间复杂度为 O(n)因为每个 id 最多被遍历一次。 空间复杂度 使用了一个大小为 n 1 的数组来存储 (id, value) 对空间复杂度为 O(n)。 示例运行 以下是对示例的运行过程分析 初始化 OrderedStream(5)stream 数组大小为 6ptr 1。 调用 insert(3, cc) 存储 stream[3] cc。 ptr 1stream[1] 为空返回 []。 调用 insert(1, aa) 存储 stream[1] aa。 ptr 1stream[1] 不为空返回 [aa]ptr 更新为 2。 调用 insert(2, bb) 存储 stream[2] bb。 ptr 2stream[2] 不为空返回 [bb]ptr 更新为 3。 调用 insert(5, ee) 存储 stream[5] ee。 ptr 3stream[3] 不为空返回 [cc]ptr 更新为 4。 调用 insert(4, dd) 存储 stream[4] dd。 ptr 4stream[4] 不为空返回 [dd, ee]ptr 更新为 6。 总结 通过使用数组和指针我们可以高效地实现按 id 递增顺序返回值的功能。该方法的时间复杂度和空间复杂度均为 O(n)能够很好地处理流式数据。
http://www.hkea.cn/news/14578951/

相关文章:

  • 做学历的网站网站title 在哪里设置
  • 那个网站做搬家推广比较好一二三四免费观看视频中文版在线
  • 建设网站的企业是什么wap手机网站建站
  • 有专门做序列图的网站建站网址大全
  • 专业的企业网站优化公司企业宣传片制作拍摄
  • 有空间怎么做网站好公司的网站设计
  • 做骑兵电影网站赚钱企业网站作业怎么做
  • 谷歌做自己的网站网站开发培训那个好
  • 高端集团官方网站建设公司360seo优化
  • 个人网站域名快速备案流程wordpress增加文章目录
  • 洛阳市建设工程安全监督网站郑州网站建设哪家最好
  • 企业网站官网模板WordPress部署百度广告
  • 知名营销网站开发如何自建网站入口
  • 网站需求表格网站开发从事
  • 门户网站 页面集成wordpress 封禁账号
  • 做logo专用的网站是哪个h5页面设计用什么软件
  • 网站的规划建设与分析静态网站更新
  • 手机网站开发周期专业从事成都网站建设
  • 搜索引擎及门户网站介绍总结设计logo的小程序
  • 网站建设 需要多少空间西安黄页查询
  • 在线生成网页网站贵阳市网站开发
  • 官方网站如何建立网站续费有什么作用
  • 做外贸网站有哪些做房产经纪人要自己花钱开网站吗
  • 东莞艺美网站建设网站购买云空间
  • 哪有免费做网站黄冈商城网站建设
  • 海拉尔做自己的网站做网站的一般都包维护吗
  • 网站域名年龄查询关键词推广哪家好
  • 黄金网站app视频常熟外贸网站建设
  • 西安 微网站跨境电商运营模式有哪些
  • 只做女性的网站网站设计与网页制作心得体会