leetcode-155. 最小栈
class MinStack { public: /** initialize your data structure here. */ MinStack() { } stack<int> s; stack<int> mins; void push(int val) { if(mins.empty()){ // mins栈为空,元素直接push mins.push(val); }else{ int tmp = mins.top(); if(val<=tmp) // 如果不为空,判断当前元素小于等于则直接入minis栈 mins.push(val); } s.push(val); } void pop() { int tmp = s.top(); if(tmp==mins.top()) // 弹出元素的时候如果弹出的元素与mini栈的栈顶元素形同,同样弹出 mins.pop(); s.pop(); } int top() { return s.top(); } int getMin() { return mins.top(); } }; /** * Your MinStack object will be instantiated and called as such: * MinStack* obj = new MinStack(); * obj->push(val); * obj->pop(); * int param_3 = obj->top(); * int param_4 = obj->getMin(); */