實現乙個最小棧,有三種操作,min:得到棧中的最小值,push:在棧頂插入乙個元素,pop:彈出棧頂元素,使這三種操作的時間複雜度都是o(1)
第一行是乙個數q,接下來q行每行表示乙個操作,每行首先是操作op若op==0,則輸出當前棧中的最小值;
若op==1,表示push,接著正整數x,把在x放進棧頂;
若op==2,表示pop,彈出棧頂元素
保證q<=500000,保證op==0或2時(即min操作和pop操作時)棧不為空。
你可以假設一開始棧的空的。
對應每個op==0或2,如果是op==0輸出當前棧中的最小值,如果是op==2輸出彈出的元素。示例1
71 31 4
01 202
0
3223
#include #includeusing namespace std;
class minstack
void pop()
else
return;
}int top()
int min()
else
return 0;
}private:
stackm_data;//資料棧
stackm_min;//輔助棧
};int main()
else if(op == 2)
}return 0;
}
帶最小值操作的棧
描述 實現乙個帶有取最小值min方法的棧,min方法將返回當前棧中的最小值。你實現的棧將支援push,pop 和 min 操作,所有操作要求都在o 1 時間內完成。樣例 push 1 pop return 1 push 2 push 3 min return 2 push 1 min return ...
最小棧 最小棧的實現與優化
實現乙個最小棧,一步一步優化,從額外空間o n 到o 1 push,pop,top,getmin都是o 1 時間。空間消耗o n 如何優化到o 1 class minstack1 void pop int top int getmin 如何只用乙個棧實現最小棧的實現?入棧順序 2,1,3,4,2,0...
leetcode 棧 155 最小棧
設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...