题目链接: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,中间还有出栈过程:

栈Min

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();
    }
}