首页 > 其他 > 详细

Leetcode 155. Min Stack

时间:2019-01-29 10:03:43      阅读:164      评论:0      收藏:0      [点我收藏+]

今天做了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

原文:https://www.cnblogs.com/LiMC-Littlewade/p/10332477.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!