P17. 带有 min 函数的栈

https://algocasts.io/episodes/LPmwNWqw

方法一,没看懂,如果 push 了 3个 -1 ,此时min 的栈中只有 -1, 那当pop前2次的时候,不能把min栈中的 -1 pop出去

@tessy_wang

这里你理解有误。stack 中 push 了 3 个 -1,并且 -1 是最小值的时候,min 栈也会 push 这 3 个 -1。具体逻辑可以看 push 函数的实现:

    public void push(int x) {
      stack.push(x);
      if (min.isEmpty() || x <= getMin()) min.push(x);
    }

关键就在于 x <= getMin() 中的 <=,也就是说,x 等于最小值的时候,也会入栈 min。