LeetCode155:Min Stack
来源:互联网 发布:阿里云工程师待遇 编辑:程序博客网 时间:2024/04/30 00:12
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) – Push element x onto stack.
- pop() – Removes the element on top of the stack.
- top() – Get the top element.
- getMin() – Retrieve the minimum element in the stack.
Hide Tags Stack Data Structure
这道题是要设计一个能够在常数时间内执行push,pop,top,获取栈中最小元素getMin函数的栈。
前面三个操作是一个栈固有的功能,但是在stl提供的栈中要获取栈中最小的元素明显不能在常数时间复杂度内完成,这就是问题的关键。
可以使用两个栈来实现在常数时间内获取最小的元素,第一个栈记录插入的数据,第二个栈记录插入当前数据时栈中的最小元素,之所以需要一个栈来保存最小元素而不是使用一个变量来保存最小元素的原因是当最小元素被弹出栈时我们不知道接下来的最小元素是多少了。
在Discuss中看到很多人在实现pop和top操作时对栈是否为空进行了判断,感觉这个判断是需要的,不然数组为空时还执行top操作明显是不合适的,但是stl中的pop和top好像没有做这个判断,这里最开始我也没考虑到,以后考虑问题要周全一些。
runtime:28ms
class MinStack {public: void push(int x) { if(minData.empty()) minData.push(x); else { if(x<minData.top()) minData.push(x); else minData.push(minData.top()); } data.push(x); } void pop() { data.pop(); minData.pop(); } int top() { return data.top(); } int getMin() { return minData.top(); } private: stack<int> data; stack<int> minData;};
0 0
- LeetCode155:Min Stack
- LeetCode155:Min Stack
- [LeetCode155] Min Stack
- leetcode155 Min Stack
- LeetCode155. Min Stack
- leetcode155: Min Stack
- leetcode155. Min Stack
- LeetCode155. Min Stack
- LeetCode155——Min Stack
- Leetcode155——Min Stack
- min stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- 2015071005 - 明天去盘山
- 越狱资料
- POJ 2096 Collecting Bugs (概率DP入门)
- stl之bit_vector原理及应用
- 递归---把一个整数反转处理
- LeetCode155:Min Stack
- 欢迎使用CSDN-markdown编辑器
- iOS--NSSe
- OC基础数据类型-NSSet
- 梯度下降法
- span的赋值与取值
- 一个月学习计划(20150711到20150811)
- OC 内存管理的原则总结
- java数组初始化