双栈实现(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(); } };