Min Stack
来源:互联网 发布:淘宝拍卖房产过户 编辑:程序博客网 时间:2024/05/29 02:52
leetcode第155题,这道题是实现一个简单的栈,如果使用python,用list模拟几乎没有什么难度,但是有一些关键性的细节需要注意,这也是这道题考察我们是否能写出一个健壮程序的思想。
- 是否考虑到栈空的一系列情况
- 是否考虑到最小值不存在的情况
- 最小值如何搜索
其中第三个问题很关键,如果单纯调用python中的min函数,会超时,过不了大数据量,我参考的办法是,在压栈的过程中就时刻比较并记录最小值,压栈的内容连着最小值一块压入,这样寻找最小值只需要常数级时间了。
class MinStack(object): def __init__(self): """ initialize your data structure here. """ self.s = [] def push(self, x): """ :type x: int :rtype: void """ curmin = self.getMin() if curmin == None or x < curmin: curmin = x self.s.append((x,curmin)) def pop(self): """ :rtype: void """ self.s.pop() def top(self): """ :rtype: int """ return self.s[-1][0] def getMin(self): """ :rtype: int """ if len(self.s) == 0: return None else: return self.s[-1][1] # Your MinStack object will be instantiated and called as such:# obj = MinStack()# obj.push(x)# obj.pop()# param_3 = obj.top()# param_4 = obj.getMin()
0 0
- min stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- [leetcode] 225. Implement Stack using Queues
- ios9键盘 level级别
- 第4条:通过私有构造器强化不可实例化的能力
- linux shell if 语句写法
- Min Stack
- ovs + dpdk版本说明
- 1087. All Roads Lead to Rome (30)
- [leetcode] 205. Isomorphic Strings
- 371. Sum of Two Integers [easy] (Python)
- 一句代码搞定 Android 图片压缩
- C语言正序输出输出一个整数的每一位
- springMVC入门项目[附入门教程]
- 关于Android AIDL使用