面试题21包含min函数的栈
来源:互联网 发布:淘宝卖家付款给买家 编辑:程序博客网 时间:2024/06/05 01:58
题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。
思路:
如果只用一个元素保存最小的元素,那么当最小的元素被弹出后,就没有办法得到剩余元素中最下的元素。
所以,最好的办法是将每次的最小元素(之前的最小元素和新压入的元素两者的较小者)都保存起来放到另外一个辅助栈里。
这是剑指offer书中的举例一个模拟过程:
#include<iostream>#include<vector>#include<stack>#include<cassert>using namespace std;template<typename T>class StackMin{public:stack<T> data;stack<size_t> minStack;void push(const T& val){data.push(val);if(minStack.size()==0||val<minStack.top())minStack.push(val);elseminStack.push(minStack.top());}void pop(){assert(data.size()>0&&minStack.size()>0);data.pop();minStack.pop();}const T& min(){assert(data.size()>0&&minStack.size()>0);return minStack.top();}};int main(){StackMin<int> s;s.push(3);cout<<s.min()<<endl;s.push(4);cout<<s.min()<<endl;s.push(2);cout<<s.min()<<endl;s.push(1);cout<<s.min()<<endl;s.pop();cout<<s.min()<<endl;s.pop();cout<<s.min()<<endl;s.push(0);cout<<s.min()<<endl;system("pause");return 0;}
阅读全文
0 0
- 面试题21:栈:包含min函数的栈
- [剑指offer][面试题21]包含min函数的栈
- 剑指offer 面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 剑指Offer:面试题21 包含min函数的栈
- 面试题21 包含min函数的栈
- 剑指offer 面试题21 包含min函数的栈
- 面试题21:包含min函数的栈
- 《剑指Offer》面试题21:包含min函数的栈
- 面试题21:包含min函数的栈
- 面试题21包含min函数的栈
- 剑指offer面试题21-包含min函数的栈
- 面试题21包含min函数的栈
- 面试题21:包含min函数的栈
- 剑指offer-面试题21:包含min函数的栈
- 剑指Offer----面试题21:包含min函数的栈
- 面试题21:包含min函数的栈
- Java算法片段(一)
- jQuery判断元素是否显示或隐藏
- Android如何设置圆角按钮 类似微信的登陆按钮
- Android如何防止apk程序被反编译
- 总结
- 面试题21包含min函数的栈
- 实现一个无法被继承的C++类
- MAVEN配置
- JavaScript/初识jQuery
- Bootstrap3.0学习第二十轮(JavaScript插件——滚动监听)
- 使用命令连接MySQL数据库
- <教材推荐> PRML_模式识别与机器学习
- Django基础知识
- ListView多条目加载