文章目录

  • 1. 题目
  • 2. 解题

1. 题目

有 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 <= 1000
1 <= id <= n
value.length == 5
value 仅由小写字母组成
每次调用 insert 都会使用一个唯一的 id
恰好调用 n 次 insert

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/design-an-ordered-stream
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class OrderedStream {vector<string> arr;int ptr = 1;
public:OrderedStream(int n) {arr.resize(n+1);}vector<string> insert(int id, string value) {arr[id] = value;vector<string> ans;while(ptr < arr.size() && arr[ptr] != "") {ans.push_back(arr[ptr]);ptr++;}return ans;}
};

216 ms 82.1 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1656. 设计有序流(数组)相关推荐

  1. LeetCode 154 在有序旋转数组中找最小-2

    Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed? Woul ...

  2. 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 有序

    给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. ...

  3. Leetcode 355. 设计推特 C++

    Leetcode 355. 设计推特 题目 设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文.你的设计需要支持以下的几个 ...

  4. LeetCode第一阶段(一)【数组篇】

    LeetCode 283 Move Zeros 给定一个数组nums,写一个函数,将数组中所有的0挪到数组的末尾,而维持其他所有非0元素的相对位置. 举例:nums = [0,1,0,3,12],函数 ...

  5. LeetCode笔记:原地修改数组

    LeetCode笔记:原地修改数组 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

  6. leetcode 622——设计循环队列

    leetcode 622--设计循环队列(C语言提交) 题目链接:leetcode 622--设计循环队列 题目描述: 设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先 ...

  7. Leetcode 622. 设计循环队列

    Leetcode 622. 设计循环队列学习 分析 代码 参考链接 分析 循环队列,自己做题时没考虑怎么实现,可以通过索引下标除以数组的长度实现循环.循环队列的队首元素和队尾元素是动态变化的,删除一个 ...

  8. [C++] 牛客网:合并两个有序的数组

    主要是体验一下牛客网里的核心代码模式到底是怎么弄的..还有C++这个东西平常用的太少了,试一试. 以外的还体验到了sort()函数的使用. 来源:牛客网 题目链接:合并两个有序的数组 知识点:数组.双 ...

  9. leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置

    给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置 leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置 示例: 输入: [0 ...

最新文章

  1. 前端javascripts基础知识点猴子吃桃
  2. mybaits trim用法
  3. java中四种线程池的区别
  4. SAP Fiori里的manifest.json
  5. Android8内测申请,小米 6 安卓 8.0 来了 内测开始招募
  6. ListView提示和技巧
  7. 20141214--C#父类,子类
  8. Eclipse + keil 使用教程
  9. 曾宪武《物联网通信技术》课后答案(二)
  10. 目瞪口呆,4款1M不到的实用软件,颠覆你的认知
  11. BZOJ1577 [Usaco2009 Feb]庙会捷运Fair Shuttle
  12. 机器学习(8)——回归和异常值处理(安然数据集)
  13. 我不是刘德华-新地/卢克
  14. 【运维 | Docker】服务器备份数据库到电脑
  15. 若依(RuoYi)配置教程
  16. java抽奖_JAVA实现用户抽奖功能(附完整代码)
  17. 4.10 单元格内容的隐藏和保护 [原创Excel教程]
  18. canvas绘制简单的霓虹灯效果
  19. 个人博客站点添加谷歌联盟Google Adsense
  20. mitmproxy安装配合selenium使用教程

热门文章

  1. 浅谈管理数据平台的一些想法
  2. 怎么看cudnn的版本好_祖坟风水怎么看,好祖坟有什么征兆?
  3. Halcon中OCR的实现及关键函数解析
  4. linux telnet 权限,允许telnet 通过root用户进行访问
  5. ldr加载指令,ldr伪指令
  6. bzoj 4827 [Hnoi2017]礼物——FFT
  7. bzoj1233 单调队列优化dp
  8. C# 多种方式发送邮件(附帮助类)
  9. kafka Failed to send messages after 3 tries 问题解决
  10. Readonly 与Const