题目:定义一个最小栈的数据结构,在该类型中实现一个能得到栈的最小值的getMin()函数。在该栈中,调用push,pop,top,getMin的时间复杂度都是O(1)。
用两个vector数组存储,一个存储原始数据序列,一个存储最小值序列。
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
min.push_back(INT_MAX);
}
void push(int x) {
data.push_back(x);
if(x <= min.back())
{
min.push_back(x);
}
}
void pop() {
if(data.back() == min.back())
{
min.pop_back();
}
data.pop_back();
}
int top() {
return data.back();
}
int getMin() {
return min.back();
}
private:
vector<int> data;
vector<int> min;
};