双栈法
- 一个栈保证栈的先入后出,一个栈每次压栈最小值,保证min。
- 同时压栈可以保证每个栈的元素个数相同,栈2的栈顶元素始终为当前元素的最小值的。
- 避免开一个全局变量保存最小值,直接用栈顶元素作为当前最小值,同时考虑栈2为空的情况。
class Solution {
public:
stack<int> s1;
stack<int> s2;
void push(int value) {
s1.push(value);
if(s2.empty()||s2.top()>value)
{
s2.push(value);
}
else{
s2.push(s2.top());
}
}
void pop() {
if(s1.size())
{
s1.pop();
s2.pop();
}
}
int top() {
return s1.top();
}
int min() {
return s2.top();
}
};



京公网安备 11010502036488号