OneBug 帶最小值操作的棧

2021-09-12 21:24:14 字數 1021 閱讀 2165

實現乙個棧, 支援以下操作:

push(val) 將 val 壓入棧

pop() 將棧頂元素彈出, 並返回這個彈出的元素

min() 返回棧中元素的最小值

要求 o(1) 開銷.

保證棧中沒有數字時不會呼叫 min()

樣例

輸入:push(1)

min()

push(2)

min()

push(3)

min()

輸出:111

一開始我想的太簡單了,只考慮到push操作,我想著如果只有o(1)的空間開銷的話,我只需要在每次push新數時,與當前的最小值miin進行比較,若新數更小,min = new number;後來真正碼**時才考慮到當做pop操作時若只是pop出了比min更大的數還好,若恰好pop出了最小的min之後,做了min()操作後,我怎麼知道新的最小的數?因此本題需要注意的乙個點是,當做pop操作時,如果當前棧內最小的數恰好被彈出時,要能 正確的找到新的最小的數。這樣就需要兩個棧來實現:乙個數正常棧stk,另乙個是有關最小數的棧minstk;

class minstack

/** @param number: an integer

* @return: nothing

*/void push(int number)

//因此當pop出最小的數後,只需同步彈出minstk棧頂的數,

} //就可以得到新的最小的數

/** @return: an integer

*/int pop()

int ret = stk.top();

stk.pop();

return ret;}/*

* @return: an integer

*/int min()

};

帶最小值操作的棧

描述 實現乙個帶有取最小值min方法的棧,min方法將返回當前棧中的最小值。你實現的棧將支援push,pop 和 min 操作,所有操作要求都在o 1 時間內完成。樣例 push 1 pop return 1 push 2 push 3 min return 2 push 1 min return ...

12 帶最小值操作的棧

實現乙個帶有取最小值min方法的棧,min方法將返回當前棧中的最小值。你實現的棧將支援push,pop和min操作,所有操作要求都在o 1 時間內完成。樣例如下操作 push 1 pop push 2 push 3 min push 1 min 返回1,2,1 public class minsta...

Lintcode 帶最小值的棧

帶最小值操作的棧 描述 筆記 資料 評測 實現乙個帶有取最小值min方法的棧,min方法將返回當前棧中的最小值。你實現的棧將支援push,pop 和 min 操作,所有操作要求都在o 1 時間內完成。您在真實的面試中是否遇到過這個題?yes 注意事項 如果堆疊中沒有數字則不能進行min方法的呼叫 樣...