劍指offer30--包含min函式的棧
阿新 • • 發佈:2018-12-31
題目描述
定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式(時間複雜度應為O(1))。
思路:
- 輔助棧sta2
- 輔助棧必須要保持次小的元素
- 保持兩個棧數量相等(我的做法)sta2可以放入最小的元素
- sta2,只看現在放入的是不是小於等於最小值,是的話就放入sta2
class Solution { public: stack<int> sta1,sta2; //sta1:真實棧 sta2:輔助棧 void push(int value) { sta1.push(value); if(sta2.size()==0||value<sta2.top()) sta2.push(value); else sta2.push(sta2.top()); } void pop() { sta2.pop(); sta1.pop(); } int top() { return sta1.top(); } int min() { return sta2.top(); } };