最小栈的原理是:将一个栈中的最小值存入另一个栈,每当有新数据入栈时,前者的栈顶元素与后者的栈顶元素比较,若前者比后者小,前者压入后者所在的栈;反之将后者再次压入其所在的栈.出栈时两者同时pop.
package Test;
import java.util.Stack;
public class MinStack {
private Stack<Integer> stackA = new Stack<>();
private Stack<Integer> stackB = new Stack<>();
public void push(int x) {
stackA.push(x);
//若stackB为空
if (stackB.isEmpty()){
stackB.push(x);
}else{
//当前最小数据与新插入数据进行比较
int min = stackB.peek();
if (min > x){
min = x;
}
stackB.push(min);
}
}
//出栈
public void pop() {
stackA.pop();
stackB.pop();
}
//获取栈顶元素
public int top() {
return stackA.peek();
}
//获取栈中最小的元素
public int getMin() {
return stackB.peek();
}
}