往往原有的標題欄無法滿足需求,此時就需要進行自定義標題欄。 重新定義Window的Template 首先,需修改WindowChrome的幾個屬性 CaptionHeight屬性值就是自定義標題欄的高,若值低於自定義窗體模板中的標題部分的高,可能或導致,滑鼠點擊標題欄無法拖動,因為滑鼠此時可能不在C ...
題目描述
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/design-an-ordered-stream
有 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 。
否則,返回一個空列表。
題目分析
首先本題雖然ptr是按序進行讀取,但是insert是可以往任意位置錄入數據,所以可以採用數組來存儲其錄入的數據。對於insert返回數值我們可以按照ptr逐個對數組進行遍歷讀取,直到stram[ptr]為空或者超過數組邊界,具體代碼如下:
public class OrderedStream
{
private string[] stream;
private int ptr;
public OrderedStream(int n)
{
stream = new string[n+1];
ptr = 1;
}
public List<String> insert(int idKey, String value)
{
stream[idKey] = value;
List<String> result = new List<string>();
while (ptr< stream.Length&&!string.IsNullOrEmpty(stream[ptr]))
{
result.Add(stream[ptr++]);
}
return result;
}
}