题目链接:click~
/*题意:设计一个栈,支持push,top,pop以及getMin()(返回栈中最小值)*/
/**
*思路:用一个栈维护最小值,当前要push的值小于等于最小栈的栈顶时
* 压入最小栈
*/
class MinStack {
private:
stack<int> s;
stack<int> min_s;
public:
void push(int x) {
s.push(x);
if(min_s.empty() || x <= min_s.top())//压入最小栈,必须要小于等于,不能只小于
min_s.push(x);
}
void pop() {
if(s.top() == min_s.top())//当前值是最小值,需将最小栈的栈顶元素弹出
min_s.pop();
s.pop();
}
int top() {
return s.top();
}
int getMin() {
return min_s.top();
}
};