LeetCode 1656 設計有序流

2021-10-14 17:29:36 字數 1387 閱讀 4543

有 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」]

思路就是每次插入後檢查ptr當前所指位置是否有元素,如果有,則返回該元素及該元素之後的連續元素,並增加ptr到連續元素的最後乙個元素之後的位置:

class

orderedstream

vector

insert

(int id, string value)

ret.

push_back

(svec[ptr]);

++ptr;

}return ret;

} vector svec;

int ptr =1;

};

LeetCode 1656 設計有序流

有 n 個 id,value 對,其中 id 是 1 到 n 之間的乙個整數,value 是乙個字串。不存在 id 相同的兩個 id,value 對。設計乙個流,以 任意 順序獲取 n 個 id,value 對,並在多次呼叫時 按 id 遞增的順序 返回一些值。實現 orderedstream 類 ...

架構設計有感

架構是乙個很直覺化的概念,理解的反差會讓設計變得大相徑庭。架構設計者 不一定是架構師 對系統的把握 認知和控制力會極大的影響系統開發的走勢。需求分析,功能分拆,技術選型,人員控制,規模 進度和質量控制等都是架構設計者的任務,穩定安全,高效 可擴充套件 可維護 優秀的使用者體驗是架構設計的基本目標。不...

資料庫設計(有例項)

1.概念 資料庫設計就是根據業務系統的具體需求,結合我們所選用的dbms 資料庫管理系統 為這個業務系統構造出最優的資料儲存模型。並建立資料庫中的表結構以及表與表之間的關聯關係的過程。使之能有效的對應用系統中的資料進行儲存,並可以高效的對已儲存的資料進行訪問。關係型資料庫系統 mysql oracl...