實現乙個棧, 支援以下操作:保證棧中沒有數字時不會呼叫 min()push(val) 將 val 壓入棧
pop() 將棧頂元素彈出, 並返回這個彈出的元素
min() 返回棧中元素的最小值
要求 o(1) 開銷.
樣例輸入: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方法的呼叫 樣...