题目链接:https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49?tpId=13&&tqId=11173&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
思路:我们从题意可以得知,首先我们需要一个可以存储数据的常规栈,此时我们可以发现我们并不能使用 O(1) 的方式来找出栈中的最小值,所以此时我们就需要在开启一个辅助栈,这个辅助栈就保存当前当前所有的数据中的最小值,下面由一张图来模拟这个过程。
例如我们向栈中一次依次存放 5 3 4 2 0,中间还有出栈过程:
import java.util.Stack; public class Solution { Stack<Integer> stk1 = new Stack<>(); Stack<Integer> stk2 = new Stack<>(); int Min = Integer.MAX_VALUE; public void push(int node) { stk1.push(node); Min = Math.min(Min, node); stk2.push(Min); } public void pop() { stk1.pop(); stk2.pop(); } public int top() { return stk1.peek(); } public int min() { return stk2.peek(); } }