代码思路很简单,就不叙述了,比较关键的地方是第10行必须是等号,否则连续输入两个相同最小值时,后面进行pop()操作时会存在bug,如果思考的不对,欢迎大家评论区指正
import java.util.Stack;
public class Solution {
Stack<Integer> stack = new Stack<Integer>();
Stack<Integer> stackMin = new Stack<Integer>();
public void push(int node) {
stack.push(node);
if (stackMin.empty()) {
stackMin.push(node);
}else if (stackMin.peek() >= node) {
stackMin.push(node);
}
}
public void pop() {
if (stack.peek() == stackMin.peek()) {
stackMin.pop();
}
stack.pop();
}
public int top() {
return stack.peek();
}
public int min() {
return stackMin.peek();
}
}
京公网安备 11010502036488号