LeetCode 1656. 设计有序流(数组)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1656. 设计有序流(数组)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 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. 设计有序流(数组)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode MySQL 1369.
- 下一篇: LeetCode 1500. Desig