Leetcode 155. Min Stack

Posted limc-littlewade

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 155. Min Stack相关的知识,希望对你有一定的参考价值。

今天做了leetcode的第155题。

题目要求我们在自己设计的数据结构中能够随时提取出所有数据中的最小值,所以如何在每次push数据的时候能够保存最小值是关键,并且需要注意的是如果我们pop出了最小值,还要能够找到下一个最小值,所以如何保留和追踪剩下的所有数据中的最小值是关键。

在discussion中排名第二的方法比较巧妙:如果我们push的当前值比最小值要小,那就先把最小值push进去(push进去之后就变成旧的最小值了),然后再push当前值,并且把当前值设置为当前的最小值。这样,如果我们pop出的值是最小值,紧接着再pop一个出来的就是剩下的所有值中的最小值(因为我们保留进去了)。

 public void push(int x) {
        // only push the old minimum value when the current 
        // minimum value changes after pushing the new value x
        if(x <= min){          
            stack.push(min);
            min=x;
        }
        stack.push(x);
    }

在submission details中耗时较少的方法是用了两个list,一个用来保存所有push的数值,另一个用来保存和追踪最小值,

以上是关于Leetcode 155. Min Stack的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 155. Min Stack

Leetcode 155. Min Stack

LeetCode 155 Min Stack

leetcode155. Min Stack

leetcode-155-Min Stack

[LeetCode] 155. Min Stack