题目链接: link.
辅助栈法
用一个辅助栈来存储当前栈所有元素的最小值,主栈每压栈一次,辅助栈都要存一次当前所有元素的最小值。
代码:
class MinStack {
public:
/** initialize your data structure here. */
stack<int>sk1;
stack<int>sk2;
MinStack() {
}
void push(int x) {
sk1.push(x);
if(sk2.empty())sk2.push(x);
else
{
if(x < sk2.top() ) sk2.push(x);
else
{
int temp = sk2.top();
sk2.push(temp);
}
}
}
void pop() {
sk1.pop();
sk2.pop();
}
int top() {
return sk1.top();
}
int getMin() {
return sk2.top();
}
};