解法一:一个栈实现
class MinStack {
public:
stack<pair<int,int>> v;
public:
MinStack() {
}
void push(int val) {
//判断是否为空
if(v.size()==0)
{
v.push({val,val});
}
else
{
int num=min(val,v.top().second);
v.push({val,num});
}
}
void pop() {
v.pop();
}
int top() {
return v.top().first;
}
int getMin() {
return v.top().second;
}
};
解法二: 运用辅助栈
class MinStack {
public:
stack<int> data;
stack<int> mint;
public:
MinStack() {
// data=new stack<>();
//min=new stack<>();
mint.push(INT_MAX);
}
void push(int val) {
//压栈
data.push(val);
int Min=min(mint.top(),val);
mint.push(Min);
}
void pop() {
data.pop();
mint.pop();
}
int top() {
return data.top();
}
int getMin() {
return mint.top();
}
};
如有错误,多多指教