剑指offer - 包含min函数的栈
来源:互联网 发布:seo专业优化公司 编辑:程序博客网 时间:2024/05/15 01:39
定义栈的数据结构,并在该类型中实现一个能够得到栈最小值的 min 函数,使得调用 min, pop, push 的时间复杂度均为1。
思路:在入栈和出栈的过程中,借助一个辅助栈来记录每次操作后的当前栈的最小值。比如当前栈压入了一个更小的值,可以将该最小值压入辅助栈中,这样辅助栈的栈顶就是当前栈的最小值了。而如果当前栈弹出一个元素,那么可以将辅助栈的栈顶弹出。注意到通过这种方式,辅助栈跟当前栈的 size 大小始终是一样的。
代码实现( data_stack 为数据栈,即当前栈; help_stack 为辅助栈 ):
template<T> void StackWithMin<T>::push( const T& value ){data_stack.push( value );if( value < help_satck.top() ){help_stack.push( value );}else{help_stack.push( help_stack.top() );}}template<T> void StackWithMin<T>::pop(){// assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行assert( data_stack.size() > 0 && help_stack.size() > 0 ); data_stack.pop();help_stack.pop();}template<T> const T& StackWithMin<T>::min() const {assert( data_stack.size() > 0 && help_stack() > 0 );return help_stack.top();}
0 0
- 【剑指offer】包含min函数的栈
- 剑指offer--包含min函数的栈
- 剑指Offer-->包含min函数的栈
- 《剑指offer》包含min函数的栈
- 剑指offer - 包含min函数的栈
- 剑指offer-包含min函数的栈
- 剑指offer:包含min函数的栈
- 包含min函数的栈|剑指offer
- 剑指offer-包含min函数的栈
- 剑指offer 包含min函数的栈
- 剑指offer:包含min函数的栈
- 剑指offer 包含min函数的栈
- [剑指offer]包含min函数的栈
- 《剑指offer》-包含min函数的栈
- 剑指offer----包含min函数的栈
- 【剑指offer】包含min函数的栈
- 剑指offer|包含min函数的栈
- 《剑指offer》包含min函数的栈
- Internet路由-主机路由表和转发表
- linux top命令
- select sysdate - 3 from dual (计算3天前日期)
- LeetCode(100) Same Tree
- Permission is only granted to system apps的解决办法
- 剑指offer - 包含min函数的栈
- A time to be promoted
- 《深入理解Linux网络技术内幕》阅读笔记(八)
- [Leetcode]Rotate Image
- 文章标题
- 如何用kill安全杀掉clusterware
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等
- W3school学习笔记之CSS
- 黑马程序员——java学习笔记--数组