Min Stack
我的思路:
1、最小栈要求能在O(1)时间内取到栈内最小值。
2、定义两个栈,一个用来保存最小值。在入栈的时候如果当前值比最小栈的值还要小就Push,如果不是就算了。在出栈的时候,如果出栈元素等于最小栈栈顶元素,最小栈也出栈,否则算了。
public:
void push(int x) {
if (!data.empty()) {
if (x <= min.top())
min.push(x);
}
else
min.push(x);
data.push(x);
}
void pop() {
if (!data.empty()) {
if (data.top() == min.top())
min.pop();
data.pop();
}
}
int top() {
return data.top();
}
int getMin() {
return min.top();
}
private:
stack<int> data;
stack<int> min;