题目
思路
创建一个数据栈x_stack和一个最小值栈min_stack,初始化minstack时压入一个最大值,后续压栈时把压入的x与之前的min比较,如果更小再压入min_stack中,数据栈是直接压入的。出栈时先判断两个栈中的栈顶元素是否相等,只有相等时才会都出栈,如果不相等表示数据栈的栈顶不是最小值,所以min_stack栈顶元素不出栈。
代码
class MinStack {
stack<int>x_stack;
stack<int>min_stack;
public:
MinStack() {
min_stack.push(INT_MAX);
}
void push(int val) {
x_stack.push(val);
min_stack.push(min(val,min_stack.top()));
}
void pop() {
if(x_stack.top()==min_stack.top())
{
min_stack.pop();
}
x_stack.pop();
}
int top() {
return x_stack.top();
}
int getMin() {
return min_stack.top();
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/
412

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



