另外开一个单调栈(stk_min)表示前i个元素中的最小值
- 如何维护
stk_min
这个栈? -
每次push_back(min(stk_min.top(), x)) 每次pop_back(stk_min.top())
参考代码
class MinStack {
public:
/** initialize your data structure here. */
stack<int> stk, stk_min;
MinStack() {
}
void push(int x) {
stk.push(x);
if (stk_min.size()) x= min(x, stk_min.top());
stk_min.push(x);
}
void pop() {
stk.pop();
stk_min.pop();
}
int top() {
return stk.top();
}
int getMin() {
return stk_min.top();
}
};