最小栈
class MinStack {
public:
stack<int>s;
stack<int>m;
MinStack() {
}
void push(int val) {
s.push(val);
if(m.empty())m.push(val);
else{
if(val<m.top())m.push(val);
else m.push(m.top());
}
}
void pop() {
m.pop();
s.pop();
}
int top() {
return s.top();
}
int getMin() {
return m.top();
}
};
muitiset
class MinStack {
public:
stack<int>s;
multiset<int>m;
MinStack() {
}
void push(int val) {
s.push(val);
m.insert(val);
}
void pop() {
m.erase(m.find(s.top()));
s.pop();
}
int top() {
return s.top();
}
int getMin() {
return *m.begin();
}
};