AcWing 41. 包含min函数的栈
原题链接
简单
作者:
小笨比
,
2021-03-12 02:07:05
,
所有人可见
,
阅读 489
思路
- 维护两个栈,一个存数据的普通栈,一个存最小值的单调栈
- 当当前最小值就是数据栈栈顶时,同时抛出两个栈的栈顶
- 当插入值x小于单调栈栈顶时,将x压入单调栈
C++代码
class MinStack {
public:
/** initialize your data structure here. */
stack<int> stack_value, stack_min;
MinStack() {
}
void push(int x) {
if(stack_min.empty() || stack_min.top() >= x) stack_min.push(x);
stack_value.push(x);
}
void pop() {
if(stack_min.top() == stack_value.top()) stack_min.pop();
stack_value.pop();
}
int top() {
return stack_value.top();
}
int getMin() {
return stack_min.top();
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/