题目
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
getMin() – Retrieve the minimum element in the stack.
Subscribe to see which companies asked this question。
分析
实现可求最小值的栈。
该特殊栈除了具有普通栈先进后出的特点,还必须可以有getMin函数求得实时的栈中最小元素。
利用一个辅助栈,保存当前元素对应栈的最小值。
AC代码
class MinStack {
public:
void push(int x) {
data.push(x);
if (minData.empty())
minData.push(x);
else{
if (minData.top() > x)
minData.push(x);
else
minData.push(minData.top());
}
}
void pop() {
data.pop();
minData.pop();
}
int top() {
return data.top();
}
int getMin() {
return minData.top();
}
private:
stack<int> data;
stack<int> minData;
};