问题描述
看链接:https://leetcode.com/problems/min-stack/
解决思路
MinStack,就是创建另一个stack2,用来和push进stack1的元素比较,更小的一个,放入stack2,这样总能保证stack2的栈顶元素,是最小的
代码
package leetcode;
import com.sun.corba.se.impl.orbutil.DenseIntMapImpl;
import java.util.ArrayDeque;
import java.util.Deque;
public class MinStack {
Deque<Integer> stack1;
Deque<Integer> stack2;
public MinStack() {
stack1 = new ArrayDeque<>();
stack2 = new ArrayDeque<>();
}
public void push(int x) {
stack1.push(x);
if (stack2.isEmpty()){
stack2.push(x);
}else{
int min = stack2.peek();
stack2.push(Math.min(min, x));
}
}
public void pop() {
stack1.pop();
stack2.pop();
}
public int top() {
return stack1.peek();
}
public int getMin() {
return stack2.peek();
}
public static void main(String[] args) {
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();
minStack.pop();
minStack.top();
minStack.getMin();
}
}