题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
代码
class Solution {
public:
stack<int> stackMain;
stack<int> stackMin; // 辅助栈:栈顶元素为当前主栈内的最小值
void push(int value) {
if(stackMin.empty())
stackMin.push(value);
else if(stackMin.top() > value)
stackMin.push(value);
stackMain.push(value);
}
void pop() {
if(stackMain.top() == stackMin.top()) // 当弹出元素为最小值时,也弹出辅助栈栈顶元素
stackMin.pop();
stackMain.pop();
}
int top() {
return stackMain.top();
}
int min() {
return stackMin.top();
}
};