class MinStack {
public:
stack<int> cur_stack;
stack<int> cur_min;//用来存储最小值的栈
int min_num; MinStack() {//初始化
this->min_num = INT_MAX;
} void push(int x) {//压入栈,同时记录最小值
if (x < this->min_num)
this->min_num = x; cur_min.push(this->min_num);
cur_stack.push(x);
} void pop() {//弹出栈,删除的同时注意小心最小值的变化
cur_min.pop();
if (cur_min.empty())
this->min_num = INT_MAX;
else
this->min_num = cur_min.top(); cur_stack.pop();
} int top() {//查看栈顶
return cur_stack.top();
} int getMin() {//当前最小值,等同于查看存储最小值的栈顶
return cur_min.top();
}
};
分析:
嘿嘿,偷懒了,直接用了别人的栈,但是作用不一样啊,我这个能查看最小值。不然那就用两个队列实现栈了。
编程太渣了,第一时间没想起来,最小值随着栈的弹出也会变化。第二时间没想起来弹出之后最小值的阈值也会变。