申请一个额外的栈空间,维护最小值,和数据栈同时进行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; }