劍指offer 包含min 的棧

2021-10-10 04:45:43 字數 538 閱讀 1823

分析:關於棧的push pop top 方法都是和普通棧一樣,就是得到棧中最小元素min()方法不一樣。

假如我們對每次push進棧的元素進行排序,使得最小的元素位於棧頂,那麼就可以在o(1)時間複雜度內實現min()方法。但單純這樣子不能保證pop,top等方法是按照棧的先入後出的規定。換言之,此時則不是乙個棧了。所以需要借助乙個輔助棧來實現。

如下圖:

進行上述操作後,可以看到,輔助棧的棧頂一定是對應每次操作後資料棧的最小值。

**如下:

class

solution

void

pop(

)int

top(

)int

min()}

;

劍指offer 包含min的棧

思路 該題主要是補充棧的min方法,例如 棧有pop push peek等內建方法,每次呼叫這些方法就能返回個結果或者有個響應,本題意在補充min方法,使得每次呼叫min方法都能得到棧中最小值,保證每次執行過min 函式後棧中元素不變。push 6 min 返回6 push 7 min 返回6,pu...

劍指offer 包含min函式的棧

一 問題描述 二 思路 兩個棧,乙個當前棧data,乙個輔助棧m min,輔助棧用來儲存當前的最小值,如果出棧,輔助棧也出棧,棧頂元素始終是當前的最小值。在入棧時,如果輔助棧為空或者當前值小於輔助棧棧頂元素,則將當前值加入輔助棧 否則將輔助棧的棧頂元素加入輔助棧,表明此次有大於min棧頂數字入棧。以...

劍指offer 包含min函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。這個題要求時間複雜度是o 1 竟然想了好久沒想出來,原來思維定式了,一直在想既然要從小到大排序怎麼可能實現o 1 呢 其實由於出棧入棧是由順序的,用來記錄最小值的棧也不用完整記錄所有元素的順序,只要根據入棧的順序來就行 ...