请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。
示例:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();
--> 返回 -3.minStack.pop();minStack.top();
--> 返回 0.minStack.getMin();
--> 返回 -2.
class MinStack {
private:
//声明两个栈,一个为主栈,用于存储当前的数据,另外一个为辅助栈,用于记录当前栈的最小值
stack<int> main_stack;
stack<int> help_stack;
public:
/** initialize your data structure here. */
MinStack() {
}
void push(int x) {
main_stack.push(x);
//判断当前的数据值
if(empty(help_stack))
help_stack.push(x);
else{
if(help_stack.top() > x){
help_stack.push(x);
}else{
//获取当栈顶元素值
int temp = help_stack.top();
help_stack.push(temp);
}
}
}
void pop() {
main_stack.pop();
help_stack.pop();
}
int top() {
return main_stack.top();
}
int getMin() {
return help_stack.top();
}
};

222

被折叠的 条评论
为什么被折叠?



