包含min函数的栈
2016-07-08 21:57
155 查看
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
要求所有要求都是O(1)时间复杂度
算法:
定义辅助最小栈,当新入栈元素小于当前栈内最小值时,辅助栈压入新入元素;当大于当前栈内最小值时,辅助栈压入当前最小值。
弹栈时,同时弹出辅助栈元素。
总结:多举例子,多画图,找到规律,会用辅助栈。
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
要求所有要求都是O(1)时间复杂度
算法:
定义辅助最小栈,当新入栈元素小于当前栈内最小值时,辅助栈压入新入元素;当大于当前栈内最小值时,辅助栈压入当前最小值。
弹栈时,同时弹出辅助栈元素。
class Solution { private: stack<int> MinStack; stack<int> ResStack; int MinVlaue = INT_MAX; public: void push(int value) { ResStack.push(value); if(value<MinVlaue){ MinStack.push(value); MinVlaue = value; } else{ MinStack.push(MinStack.top()); } } void pop() { ResStack.pop(); MinStack.pop(); } int top() { return ResStack.top(); } int min() { return MinStack.top(); } };
总结:多举例子,多画图,找到规律,会用辅助栈。
相关文章推荐
- C++基于栈实现铁轨问题
- 浅析C语言中堆和栈的区别
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- Array栈方法和队列方法的特点说明
- java数据结构之java实现栈
- 浅析栈区和堆区内存分配的区别
- 用Java代码实现栈数据结构的基本方法归纳
- 用PHP解决的一个栈的面试题
- 浅谈C#中堆和栈的区别(附上图解)
- C#使用Object类实现栈的方法详解
- JavaScript数据结构与算法之栈详解
- C语言之栈和堆(Stack && Heap)的优缺点及其使用区别
- Python实现栈的方法
- JavaScript数组的栈方法与队列方法详解
- JavaScript数据结构与算法之栈与队列
- JavaScipt中栈的实现方法
- Java中堆和栈的区别详解