解法一:同步辅助栈
import java.util.Stack;
public class Solution {
Stack<Integer> stack=new Stack<>();
Stack<Integer> helper=new Stack<>();
public void push(int node) {
stack.push(node);
if(helper.isEmpty()) helper.push(node);
else helper.push(Math.min(helper.peek(),node));
}
public void pop() {
stack.pop();
helper.pop();
}
public int top() {
return stack.peek();
}
public int min() {
return helper.peek();
}
}
解法二:非同步辅助栈
import java.util.Stack;
public class Solution {
Stack<Integer> stack=new Stack<>();
Stack<Integer> helper=new Stack<>();
public void push(int node) {
stack.push(node);
if(helper.isEmpty()||helper.peek()>=node)
helper.push(node);
}
public void pop() {
int t=stack.pop();
if(t==helper.peek()) helper.pop();
}
public int top() {
return stack.peek();
}
public int min() {
return helper.peek();
}
}
Java中栈的推荐使用方法
Deque<T> stack=new ArrayDeque<>();