【剑指 offer】(二十一)—— 包含 min 函数的栈
2016-04-09 15:31
309 查看
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数,在该栈中,调用 min、pop、push 的时间复杂度都是 O(1)。
思路:定义一个辅助栈,用以保存当前栈的最小值,需保持辅助栈和当前栈的高度一致,以实现二者push、pop的同步;
(1)栈的数据结构定义
(2)成员函数实现
思路:定义一个辅助栈,用以保存当前栈的最小值,需保持辅助栈和当前栈的高度一致,以实现二者push、pop的同步;
(1)栈的数据结构定义
template<typename T> class StackWithMin { public: void push(const T& value); void pop(); const T& min(); private: stack<T> data; stack<T> tmp; };
(2)成员函数实现
template<typename T> void StackWithMin<T>::push(const T& value) { data.push(value); if (tmp.empty() || value < tmp.top()) tmp.push(value); else tmp.push(tmp.top()); } template<typename T> void StackWithMin<T>::pop() { assert(!data.empty()); data.pop(); tmp.pop(); } template<typename T> const T& StackWithMin<T>::min() const { assert(!tmp.empty()); return tmp.top(); }
相关文章推荐
- CSS3阴影 box-shadow的使用和技巧总结
- js中的潜伏者之Arguments对象
- 什么是语义化的HTML?为什么要做到语义化?
- jquery 验证插件简单原理
- <jQuery>导航的滚动锚点
- JQuery ajax请求一直返回Error(parsererror)
- 5种css图片浮动效果
- JSP中的<%=表达式%>和<%表达式%>有什么区别?
- 【剑指 offer】(十九)—— 二叉树镜像
- Extjs4 布局 layout 详解
- Javascript中闭包问题(转载)
- SQL更新语句,Error Code: 1175. You are using safe update
- 对比JQuery与JavaScript
- JS动态添加div,然后在div中添加元素
- 深入理解javascript原型和闭包系列 系深入理解javascript原型和闭包(17)——补充:上下文环境和作用域的关系
- 深入理解javascript原型和闭包系列 深入理解javascript原型和闭包(16)——补this
- js 截取或者替换字符串中的数字
- 关于在maven项目下,从一个jsp页面通过重定向跳转到另一个jsp页面时出现404的错误的解决方法
- 深入理解javascript原型和闭包系列 深入理解javascript原型和闭包(15)——闭包
- 深入理解javascript原型和闭包系列 深入理解javascript原型和闭包(14)——从【自由变量】到【作用域链】