相较普通的栈,题目要求多实现一个操作getMin(): 获取栈中最小的元素
我们维护两个栈:普通栈s保存所有元素, 最小栈min_s保存s中的“曾出现过”的最小元素的递减序列。
min_s.top()即为getMin()的返回值,标识普通栈s里的最小元素。
考虑压栈 3 4 5 2 3 1, 它们有如下表现:
push 3 4 5 2 3 1
s 3...
分类:
其他好文 时间:
2015-02-24 11:27:50
阅读次数:
133
设置两个栈,一个vbase用于存放原来的数据,一个minbase用于存放最小数据。将第一个进栈的数据同时压入两个栈中。在之后压入数据时,对于vbase,直接将数据压入即可;对于minbase,则需要比较待压入的数据与vbase顶端数据的大小,小于等于vbase顶端的数据,就将这个数据也压入minbase中。如果后来得到的值是大于当前最小栈顶的值的,那么接下来pop都会先出去,而最小栈顶的值会一直在...
分类:
其他好文 时间:
2015-02-08 14:10:32
阅读次数:
133
题目链接:https://oj.leetcode.com/problems/min-stack/
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
push(x) -- Push element x onto stack.pop(...
分类:
其他好文 时间:
2014-12-17 16:28:46
阅读次数:
181
////main.cpp//MinStack2////CreatedbyAlpson14/12/3.//Copyright(c)2014年chen.Allrightsreserved.//#include#includeusingnamespacestd;classMinStack{public:v...
分类:
编程语言 时间:
2014-12-06 06:32:56
阅读次数:
156
实现一个最小栈的push(int x),pop(),top(),min()方法,要求都是常量时间...
分类:
其他好文 时间:
2014-12-05 15:35:03
阅读次数:
156
最小栈
最小栈其实和栈没有什么区别的,唯一的区别在于最小栈是可以在O(1)时间内得到当前的栈空间里,最小的值是多少。
最小栈的操作
最小栈的操作和普通栈的操作没有太大区别,唯一多了一个方法就是getMin()方法,这个方法是用来获取当前栈内的最小值。其他方法就是Push(), Pop(), Top()...等
在O(n)时间内找到新的最小值
这里就厉害了,先说普通的O...
分类:
编程语言 时间:
2014-12-05 07:07:28
阅读次数:
293