題面
實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中的最小元素的操作。
要求
pop(), push(), getmin()時間複雜度都是o(1)
思路
1.準備兩個棧,資料棧+最小元素棧實現 (**未測試,注意!)2.壓入元素時,先壓入資料棧,然後與最小元素棧頂比較;若小,則壓入,若大,不做處理(1)/壓入當前棧頂(2)
(1)若不做處理,那麼需要在pop()彈出時,做判斷,若stackdata要彈出的元素與stackmin頂相等,那麼將stackmin頂也一併彈出
(2)若2中採用再次壓入stackmin頂元素,那麼在pop()函式中,就只要彈出兩個棧頂即可,邏輯較為簡單。
占用額外空間較小,但pop(),push()函式較為複雜
1class
mystack_1 16}
17int
pop()
1827}28
intgetmin()
2932
inttop()
3336 };
占用額外空間較大,操作函式簡單。
1class
mystack_2 18}
19int
pop()
2028}29
intgetmin()
3033
inttop()
3437 };
棧與佇列1 設計getMin功能的棧
設計棧,實現基本功能的前提下,實現返回棧內最小元素的功能 1.push,pop,getmin 複雜度為o 1 2.允許使用現成棧結構 使用兩個棧,stackdata和stackmin,stackmin負責存最小值 共同點 都用stackmin儲存stackdata的最小值,時間複雜度均為o 1 空間...
實現GetMin功能的棧
題目 實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的棧。要求 1 pop push getmin操作的時間複雜度都為o 1 2 設計的站型別可以使用現成的棧結構 棧的一些基本定義模板 標頭檔案 include 模板 型別名 template struct specstack ...
設計getMin功能的棧
題目描述 實現乙個特殊功能的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的操作。輸入描述 第一行輸入乙個整數n,表示對棧進行的操作總數。下面n行每行輸入乙個字串s,表示操作的種類。如果s為 push 則後面還有乙個整數x表示向棧裡壓入整數x。如果s為 pop 則表示彈出棧頂操作。如果s為 ...