自定義棧獲取棧最小值001面試題

2021-10-09 19:55:46 字數 770 閱讀 9568

請設計乙個棧,除了常規棧支援的pop與push函式以外,還支援min函式,該函式返回棧元素中的最小值。執行push、pop和min操作的時間複雜度必須為o(1)。

自定義棧,獲取最小值,時間複雜度是o(1)

使用乙個資料結構儲存自定義棧的元素,list,queue,deque,stack

2、時間複雜度為1時候,輸出最小值,肯定得隨壓棧時候,就得儲存住那個最小值,而且不是只呼叫這個最小值一次,所以只維護乙個變數tem暫存最小值不行,這個獲取最小值函式得重複呼叫多次,

3、維護兩個棧,輔助棧儲存最小值

class的結構,

類的建構函式

class

minstack

// 類的建構函式,沒有返回值,也不用形參,也沒有實際的函式體

void

push

(int x)

void

pop(

)int

top(

)int

getmin()

};/** * your minstack object will be instantiated and called as such:

* minstack* obj = new minstack();

* obj->push(x);

* obj->pop();

* int param_3 = obj->top();

* int param_4 = obj->getmin();

*/

棧找最小值問題

question 實現乙個特殊的棧,在實現棧的基本功能的基礎上,在實現回棧中最小元素的操作 thinking sketch 定義倆個棧。同時壓入同時彈出,比如說乙個data,乙個min,當data棧新壓入的數大於min的棧頂,重複壓入min棧頂數 detailed 分別定義data,min倆個棧,p...

3 2 棧的最小值

ntm inim um int minimum intmin imum 其時間複雜度為o 1 o 1 o 1 該演算法的缺點是當棧中元素較多時浪費了較多空間。以下是實現 和測試 測試結果如圖1所示。實現 class nodewithmin nodewithmin operator nodewithm...

面試題 03 02 棧的最小值

請設計乙個棧,除了常規棧支援的pop與push函式以外,還支援min函式,該函式返回棧元素中的最小值。執行push pop和min操作的時間複雜度必須為o 1 示例 minstack minstack newminstack minstack.push 2 minstack.push 0 minst...