主要想通过栈找出一个最小值
于是整两个栈,一个正常放,另一个放比字节栈顶元素小的值,这样第二个栈的栈顶就一直是最小的值了。
出栈也是,如果栈1和栈2顶元素相同,栈2中的元素才出栈
class MinStack {
Stack<Integer> stack1;
Stack<Integer> minstack;
/** initialize your data structure here. */
public MinStack() {
stack1=new Stack<>();
minstack=new Stack<>();
}
public void push(int val) {
stack1.push(val);
if(minstack.isEmpty()||minstack.peek()>=val){
minstack.push(val);
}
}
public void pop() {
if(stack1.peek().equals(minstack.peek())){
minstack.pop();
}
stack1.pop();
}
public int top() {
return stack1.peek();
}
public int getMin() {
return minstack.peek();
}
}