[微软面试100题] 设计包含min函数的栈
2012-12-04 14:54
316 查看
题目
定义栈的数据结构,要求添加一个 min函数,能够得到栈的最小元素。要求函数 min、push 以及 pop 的时间复杂度都是 O(1)。
分析
栈是LIFO的队列,当一个新元素入栈时,栈的最小值状态是已经确定的,这时只需比较新元素与最小值的大小,并将新的最小值记录在该元素上。显然,只用在标准的栈实现上,为每个元素加入一个伴随值min。
代码
class StackWithMin { public: StackWithMin() { m_nTop = 0; } void Push(int dat) { if (m_nTop == 100) error("out of stack space"); m_aElements[m_nTop].value = dat; m_aElements[m_nTop].min = dat; if (m_nTop > 0 && m_aElements[m_nTop-1].min < dat) m_aElements[m_nTop].min = dat; m_nTop ++; } int Pop() { if (m_nTop == 0) error("empty stack"); int dat = m_aElements[m_nTop-1].value; m_nTop --; return dat; } int min() { if (m_nTop == 0) error("empty stack"); return m_aElements[m_nTop-1]; } private: struct Element { int value; int min; }; Element m_aElements[100]; // 简单实现, 使用了定长数组 int m_nTop; };
相关文章推荐
- 微软面试100题之二 设计包含min函数的栈。
- 微软等面试100题筛选答案-2-设计包含min函数的栈
- 【微软面试100题】2.设计包含min函数的栈
- 微软面试100题系列---设计包含min函数的栈
- 微软等面试100题第二题:设计包含min函数的栈
- 面试100题:2.设计包含min函数的栈
- (微软面试100题)设计包含min 函数的栈
- 微软面试(2/100)--设计包含函数的栈
- 面试100题:2.设计包含min函数的栈
- 算法面试100题——2.设计包含min函数的栈
- 包含min函数的栈 【微软面试100题 第二题】
- 微软算法100题02 设计包含min函数的栈
- 【微软100面试题实现】第02题:设计包含min函数的栈
- 包含min函数的栈 【微软面试100题 第二题】
- 微软100题-第2题设计包含min函数的栈
- 微软面试100题系列-设计包含 min 函数的栈
- 程序员面试题精选100题(02)-设计包含min函数的栈[数据结构]
- 微软等数据结构+算法面试100题(42)-- 设计一个栈结构
- 程序员面试题精选100题(02)-设计包含min函数的栈
- 【微软100题】002设计包含 min 函数的栈