题目21 包含Min函数的栈】的更多相关文章

///////////////////////////////////////////////////////////////////////////////////// // 3. 题目21  包含Min函数的栈 template <typename TYPE> class CMinInStack { public: void Push(const TYPE& value); const TYPE Pop(); const TYPE& GetMinValue() const;…
题目来源:<剑指offer>面试题21 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push以及pop的时间复杂度都是O(1). 分析:假设用于存储主要数据的栈称为数据栈.我们增加一个辅助栈,它的栈顶元素永远是当前数据栈中元素的最小值.当插入元素时,如果插入的元素比辅助栈栈顶还小,那么就往辅助栈压入这个数据作为当前数据栈新的最小值.如果大的话,再次压入辅助栈的栈顶元素,表明来了一个新元素后,最小值没有变换. //m_data是数据栈,m_…
问题描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push及pop的时间复杂度都是O(1). 思路:加入一个辅助栈用来存储最小值集合 (这里要注意题目并没有说栈内的元素类型,因此要尽量通用) import java.util.Stack; public class Solution { Stack s1=new Stack(); Stack min=new Stack(); public void push(int node) { if(m…
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数. 在该栈中,调用min,push及pop的时间复杂度都是O(1). 这一题实际上需要一个辅助栈存储最小值: 1.在模板类定义两个栈类型私有成员变量,一个为保存数据的栈另外一个为保存最小值的栈 2.当栈为空的时候直接将数据同时压入数据栈和最小值栈 3.当栈不为空的时候,将数据先压入数据栈同时比较该数据和最小值栈栈顶元素的大小   若大于最小值栈栈顶元素,则向最小值栈压入其栈顶元素,否则压入该数据到最小值栈   栈顶 4.…
题目:定义栈数据结构,并在该数据结构中实现一个能获得栈最小元素的函数min.要求push,min,pop时间都是O(1). 思路:要用一个辅助栈,每次有新元素压栈时辅助栈压入当前最小元素:min函数直接取辅助栈栈顶元素即可:有元素弹出时辅助栈元素也弹出,这样栈顶就是剩下的元素中的最小的了. #include <iostream> #include <stack> using namespace std; template<typename T> class StackW…
(min函数的作用是返回栈内最小值) 首先这个栈要具有普通栈所具有的push()和pop()方法,那么内部一定包含一个Stack.至于还要能实现min函数,而且还是在O(1)时间复杂度内,我们不得不考虑用额外的空间. 如果直接使用一个int变量存储当前的最小值,我们的确可以获得最小值,但是当栈pop()了以后,我们无法获得次小值.我们需要一个数据结构来动态保存每个时刻的最小值,每当push()和pop()的时候,同样更新这个数据结构,而且时间复杂度也是O(1),那么看来需要额外O(n)的空间了.…
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. C++: class Solution { private: stack<int> dataStack ; stack<int> minStack ; public: void push(int value) { dataStack.push(value) ; if (minStack.empty() || value < minStack.top()){ minStack.push(value) ; }…
一.题目:包含Min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). 这里我们要实现的就是min.push以及pop三个方法: public class MinInStack<T> where T : struct { private Stack<T> dataStack; private Stack<T> minStack; public MinInStack()…
/** * 题目:包含min函数的栈 * 描述:  定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数.  *  注:用data来保存数据,用另一个栈min保存依次入栈最小的数 *  每次入栈的时候,如果入栈的元素比min中的栈顶元素小或等于则入栈,否则不入栈. * 方案: * */ public class Two { Stack<Integer> data = new Stack<>(); Stack<Integer> min = new Stac…
2.设计包含 min 函数的栈(栈)定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素.要求函数 min.push 以及 pop 的时间复杂度都是 O(1). 我的思路: 用一个额外的元素记录最小值,push时若遇到更小的则更新.但是pop的时候遇到了问题,最小的弹出去了怎么得到下一个最小的值? 总觉得要排序,再存一个min的链.结果没达到O(1). /* 2.设计包含 min 函数的栈(栈) 定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素. 要求函数 min…