堆疊是一種經典的後進先出的線性結構,相關的操作主要有「入棧」(在堆疊頂插入乙個元素)和「出棧」(將棧頂元素返回並從堆疊中刪除)。本題要求你實現另乙個附加的操作:「取中值」——即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n/2 小元;若是奇數,則為第 (n+1)/2 小元。
輸入的第一行是正整數 n(≤105)。隨後 n 行,每行給出一句指令,為以下 3 種之一:
push key
poppeekmedian
其中key
是不超過 105 的正整數;push
表示「入棧」;pop
表示「出棧」;peekmedian
表示「取中值」。
對每個push
操作,將key
插入堆疊,無需輸出;對每個pop
或peekmedian
操作,在一行中輸出相應的返回值。若操作非法,則對應輸出invalid
。
超時**:
}
兩個**的區別就在於排序,前者使用sort函式對vector內的元素進行排序,後者使用了類似插入排序的方式排序,前者在需要peekmedian操作時就要進行一次排序,資料較多時超時是必然的,後者是對資料進行了優化處理,讓排序的花銷不太大,在peekmedian操作時能夠使用較小的代價完成目標操作。
3 3 6 特殊堆疊 30分
是參考一篇部落格的,然後加了一些自己的注釋,學習ing 堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第...
L3 002 特殊堆疊 (30 分)
堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小元 若是奇數,則為第 n 1 2 小元。輸入...
L3 002 特殊堆疊 (30 分
堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小元 若是奇數,則為第 n 1 2 小元。輸入...