思路:用两个栈来存储元素,一个用来存储栈的所有元素,一个用来筛选栈的最小元素,利用栈先入后出的思路, 只要入栈的元素小于筛选栈的栈顶元素就将这个元素也压入筛选栈,这样就能保证筛选栈的栈顶元素始终是栈中的最小元素,出栈同理,代码如下:
import java.util.Stack;
public class Solution {
private Stack<Integer> stackData;
private Stack<Integer> stackMin;
public Solution() {
stackData = new Stack<>();
stackMin = new Stack<>();
}
public void push(int node) {
if(stackMin.empty()){
stackMin.push(node);
}else if(node<this.min()){
stackMin.push(node);
}
stackData.push(node);
}
public void pop() {
int value = stackData.pop();
if(value == this.min()){
stackMin.pop();
}
}
public int min() {
return stackMin.peek();
}
}