申请一个额外的栈空间,维护最小值,和数据栈同时进行push和pop即可
#include<iostream>
#include<stack>
//成员函数不要和构造函数混淆
//函数是否有形参和函数的返回类型没有关系
class Min{
public:
void push(int x){
data.push(x);
//为空,输出为1,分清楚逻辑判断
if(min.empty()){
min.push(x);
}else{
if (x > min.top()){
x = min.top();
}
min.push(x);
}
}
void pop(){
data.pop();
min.pop();
}
int top(){
return data.top();
}
int getMin(){
return min.top();
}
private:
std::stack<int> data;
std::stack<int> min;
};
int main(){
Min S;
S.push(2);
std::cout<<S.getMin()<<std::endl;
S.push(-1);
std::cout<<S.getMin()<<S.top()<<std::endl;
S.push(0);
std::cout<<S.getMin()<<std::endl;
return 0;
}