题目:155. 最小栈
思路:一个栈用来存数据,另外一个栈用来存当前最小的元素。
C++版本:
class MinStack {
public:
stack<int> st;
stack<int> mn;
MinStack() {
mn.push(INT_MAX);
}
void push(int val) {
st.push(val);
mn.push(min(mn.top(),val));
}
void pop() {
st.pop();
mn.pop();
}
int top() {
return st.top();
}
int getMin() {
return mn.top();
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/
JAVA版本:
class MinStack {
Deque<Integer> dq;
Deque<Integer> mn;
public MinStack() {
dq=new LinkedList<Integer>();
mn=new LinkedList<Integer>();
mn.push(Integer.MAX_VALUE);
}
public void push(int val) {
dq.push(val);
mn.push(Math.min(mn.peek(),val));
}
public void pop() {
dq.poll();
mn.poll();
}
public int top() {
return dq.peek();
}
public int getMin() {
return mn.peek();
}
}
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(val);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/