這道題目主要考察你對棧的出入情況是否真正理解。
解題思路:
建立乙個輔助棧,我們這裡定義為棧b,同時定義乙個主棧,棧a
當第乙個元素進入棧a時,讓新元素也進入棧b,因為此時的最小元素就是第乙個元素 棧a4
棧b4
之後,每當a中新進入乙個元素就跟棧a中的最小值進行比較,如果比最小值小則進入棧b.此時棧b的棧頂元素就是棧a的最小值 棧a
4973
棧b 4
34.每當棧a有元素進行出棧時,如果出棧元素是棧a的最小值,則讓棧b的棧頂元素也進行出棧,則棧b的餘下棧頂就是a的次小值,代替剛才出棧的最小值變成現在的最小值(小三轉正)。
5.調取getmin時就是調取b的棧頂元素
**展示
//最小棧問題
//題目描述:實現乙個棧,該棧的出棧和入棧,取最小值的三個方法的時間複雜度都是
//o(1)
#include#includeusing namespace std;
stacka;//棧a是主棧
stackb;//棧b是輔助棧
void push(int element)
}void pop()
a.pop();
}void getmin(){
if(a.empty()){
cout<<"stack is empty"《輸出
最小棧的實現
最小棧的實現 定義兩個棧,乙個資料棧,乙個最小棧 如果最小棧為空就直接把number壓人棧中 最小棧不為空,就把number與最小棧的棧頂元素進行比較,如果小於最小棧的棧頂元素,就把number壓入最小棧,否則就把number壓入datastack中,最後返回最小棧的棧頂元素就是最小值 includ...
最小棧的實現
題目 實現乙個棧,該棧帶有出棧 pop 入棧 push 取最小元素 getmin 3個方法,要保證這3個方法的時間複雜度都是o 1 解題思路 設原有的棧叫做棧a,此時建立乙個額外的 備胎 棧b,用於輔助棧a 當第乙個元素進入棧a,讓新元素也進入棧b。這個唯一的元素就是棧a的當前最小值。之後每當新元素...
最小棧的實現
coding utf 8 實現乙個棧,該棧帶有出棧 pop 入棧 push 取最小元素 getmin 3個方法。要保證這3個方法的時間複雜度都是o 1 class minstack 定義列表 def init self self.stack 入棧def push self,value 出棧 defp...