題目描述:定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小素的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 預備知識 棧的定義 模板函式 思路 面對乙個複雜的問題,我們可以舉幾個具體的例子來尋找規律,對於本題目,我們可以通過舉例來分析它...