题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路:借助一个辅助栈,压入时判断辅助栈是否为空或者要压入的元素比栈顶元素小,弹出是判断,要弹出元素是否为辅助栈栈顶,是则弹出。min函数则是返回辅助栈栈顶元素。
代码:
class Solution { private: stack<int> sta; stack<int> minsta; public: void push(int value) { if(minsta.empty()||value < minsta.top()) { minsta.push(value); } sta.push(value); } void pop() { if(sta.top() == minsta.top()) { minsta.pop(); } sta.pop(); } int top() { return sta.top(); } int min() { return minsta.top(); } };