题解 | #包含min函数的栈#
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
import java.util.*; import java.util.Stack; public class Solution { // 用于存储内容的栈 Stack<Integer> nodeStack = new Stack<>(); // 用于【同步】存储当前栈中最小值的栈 Stack<Integer> minStack = new Stack<>(); // 入栈 public void push(int node) { // 两个栈要同步 // 入nodeStack nodeStack.push(node); // 入minStack if (minStack.isEmpty()) { // 如果minStack空,则无需比较 minStack.push(node); } // 如果minStack非空,则需要比较,将较小的压入minStack int min = Math.min(node, minStack.peek()); minStack.push(min); } // 出栈(只弹出不返回) public void pop() { // 两个栈要同步 nodeStack.pop(); minStack.pop(); } // 获得栈顶元素(只返回不弹出) public int top() { return nodeStack.peek(); } // 获得栈中最小元素(只返回不弹出) public int min() { return minStack.peek(); } }