劍指offer 面試題21 包含min函式的棧

2021-07-26 06:35:00 字數 516 閱讀 3155

題目描述:定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小素的min 函式。在該棧中,呼叫min、push 及pop的時間複雜度都是0(1)。

題目分析:借助乙個輔助棧,當向棧中壓入元素時,跟輔助棧頂元素作比較,把最小的放到輔助棧中。每次都把最小元素放入輔助棧,這樣在彈出最小元素後,剩下的棧中棧頂依然是最小元素。

//包含min函式的棧

public

static

class stackmin>

public t pop()

//如果要彈出的元素和最小數棧中頂元素相等,則一起彈出

if (datestack.peek() == minstack.peek()) else

}public

void

push(t t) else

datestack.push(t);}}

public t min()

return minstack.peek();

}}

劍指offer 面試題21 包含min函式的棧

題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小最小元素的min函式。在該棧中,呼叫min push 及 pop的時間複雜度都是o 1 本題關鍵問題在於 o 1 時間複雜度的 min 函式。即無論佔中元素如何變化。都要在 o 1 內知道最小值。因此,需要設定兩個棧 1 資料棧,用於資料的...

劍指offer 面試題21 包含min函式的棧

題目 定義棧的資料結構,請在該型別中實現乙個能夠得到得到棧的最小元素min函式。在該棧中,呼叫該push pop min的時間複雜度都是o 1 思路 棧自身的特徵 後進先出。如何滿足在o 1 的時間內但返回最小的元素?思路1 將棧排序,將最小的放到前面,每次呼叫min 的返回第乙個,不過這不符合棧的...

劍指offer面試題21

面試題21 包含min函式的棧 題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 預備知識 棧的定義 模板函式 思路 面對乙個複雜的問題,我們可以舉幾個具體的例子來尋找規律,對於本題目,我們可以通過舉例來分析它...