双栈实现(C++)
包含min函数的栈
http://www.nowcoder.com/questionTerminal/4c776177d2c04c2494f2555c9fcc1e49
定义两个栈,栈1实现基本功能,栈2保存当前栈状态的最小值
压栈:压栈时若压入值小于栈2的栈顶,将改值压入栈2
出栈:出栈时若栈顶值等于栈2栈顶,栈2也随之出栈
当前栈的最小值即为栈2栈顶值
class Solution {
public:
stack<int> stk, mm;
void push(int value) {
stk.push(value);
if(mm.empty() || value < mm.top())
mm.push(value);
}
void pop() {
if(!stk.empty()){
if(mm.top()==stk.top())
mm.pop();
stk.pop();
}
}
int top() {
if(stk.empty()) return 0;
return stk.top();
}
int min() {
if(stk.empty()) return 0;
return mm.top();
}
};