class Solution {
public:
//本题难点在对动态的栈进行求最小值的操作,可以先定义两个vector调用sort函数来解决
stack<int> a;
vector<int> b1,b2;//定义所需的栈和序列
int m{};//记录最小值
void push(int value) {
a.push(value);
b1.push_back(value);//压栈,push数据进入vector
}
void pop() {
a.pop();
b1.pop_back();//出栈,pop数据走出vector
}
int top() {
return a.top();//返回栈顶数据
}
int min() {
b2=b1;//先复制一份b1,这是为了保留b1的顺序
sort(b1.begin(),b1.end());//将b1的数据进行升序
m=b1[0];//最小值即为b[0]
b1=b2;//将顺序复原
return m;
}
//本题可能有更优的解法,原谅笔者水平较次,只会常规解法
};

京公网安备 11010502036488号