<p>有 <code>n</code> 个 <code>(id, value)</code> 对,其中 <code>id</code> 是 <code>1</code> 到 <code>n</code> 之间的一个整数,<code>value</code> 是一个字符串。不存在 <code>id</code> 相同的两个 <code>(id, value)</code> 对。</p> <p>设计一个流,以 <strong>任意</strong> 顺序获取 <code>n</code> 个 <code>(id, value)</code> 对,并在多次调用时 <strong>按 <code>id</code> 递增的顺序</strong> 返回一些值。</p> <p>实现 <code>OrderedStream</code> 类:</p> <ul> <li><code>OrderedStream(int n)</code> 构造一个能接收 <code>n</code> 个值的流,并将当前指针 <code>ptr</code> 设为 <code>1</code> 。</li> <li><code>String[] insert(int id, String value)</code> 向流中存储新的 <code>(id, value)</code> 对。存储后: <ul> <li>如果流存储有 <code>id = ptr</code> 的 <code>(id, value)</code> 对,则找出从 <code>id = ptr</code> 开始的 <strong>最长 id 连续递增序列</strong> ,并 <strong>按顺序</strong> 返回与这些 id 关联的值的列表。然后,将 <code>ptr</code> 更新为最后那个 <code>id + 1</code> 。</li> <li> <p>否则,返回一个空列表。</p> </li> </ul> </li> </ul> <p> </p> <p><strong>示例:</strong></p> <p><strong><img alt="" src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/11/15/q1.gif" style="width: 682px; height: 240px;" /></strong></p> <pre> <strong>输入</strong> ["OrderedStream", "insert", "insert", "insert", "insert", "insert"] [[5], [3, "ccccc"], [1, "aaaaa"], [2, "bbbbb"], [5, "eeeee"], [4, "ddddd"]] <strong>输出</strong> [null, [], ["aaaaa"], ["bbbbb", "ccccc"], [], ["ddddd", "eeeee"]] <strong>解释</strong> 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"] </pre> <p> </p> <p><strong>提示:</strong></p> <ul> <li><code>1 <= n <= 1000</code></li> <li><code>1 <= id <= n</code></li> <li><code>value.length == 5</code></li> <li><code>value</code> 仅由小写字母组成</li> <li>每次调用 <code>insert</code> 都会使用一个唯一的 <code>id</code></li> <li>恰好调用 <code>n</code> 次 <code>insert</code></li> </ul>