NC90 包含min函数的栈
简单的双栈法
常规的做法是额外添加一个同步栈(min栈),以保存记录之前所有的min值,相当于是使用了n个辅助变量,所以空间复杂度是O(n)。
这里要注意min函数中必须是数据,不能是一个函数。
class Solution {
public:
stack<int> st1;
stack<int> Min;
void push(int value) {
st1.push(value);
if(!Min.empty())
{
int x=Min.top();
if(x<value) value =x;
}
Min.push(value);
}
void pop() {
st1.pop();
Min.pop();
}
int top() {
return st1.top();
}
int min() {
return Min.top();
}
};