题目大意: 实现一个能够得到栈的最小元素的栈,调用 min、push 及 pop 的时间复杂度都是 O(1)
思路: 通过辅助栈来存储目前最小值,两栈同进退
代码
classMinStack{public:/** initialize your data structure here. */
stack<int> s,mins;MinStack(){
mins.push(INT_MAX);}voidpush(int x){
s.push(x);
mins.push(::min(x,mins.top()));}voidpop(){
s.pop();
mins.pop();}inttop(){return s.top();}intmin(){return mins.top();}};/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(x);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->min();
*/