两个思路:
1. 辅助栈
2. 仅用一个栈
方法1
class MinStack{
private:
stack<int> st;
stack<int> min_stack;
public:
void push(int val) {
st_min.push(min(st.top(), val));
st.push(val);
}
void pop() {
st.pop();
min_stack.pop();
}
int top() {
return st.top();
}
int getMin(){
return min_stack.top();
}
};
方法2
class MinStack{
private:
stack<pair<int,int>> st;
public:
void push(int val){
if (st.empty()) {
st.push(make_pair(val, val));
}else {
st.push(make_pair(val, min(st.top().second, val));
}
}
void pop() {
st.pop();
}
int top() {
return st.top().first;
}
int getMin() {
return st.top().second;
}
};