经典面试题21——包含min函数的栈
来源:互联网 发布:qq飞车星河战警数据 编辑:程序博客网 时间:2024/05/22 01:48
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数,在该栈的调用中,调用min、push、以及pop、的时间复杂度都是O(n)。
代码如下:
#include <iostream>#include <stack>#include <stdexcept>#include <iomanip>using namespace std;template<class T>class MinStack{private: stack<T> s; stack<T> ms;public: void push(const T& value){ s.push(value); if(!ms.empty()) ms.push(value<ms.top()?value:ms.top()); else ms.push(value); } T pop(){ if(s.empty() || ms.empty()) throw exception(); T tmp = s.top(); s.pop(); ms.pop(); return tmp; } T min(){ if(!ms.empty()) return ms.top(); else // it is a little different than java throw out_of_range("\nmin stack is empty\n"); }};int main(){ MinStack<int> ms; int a[10] = {43,35,34,7,2,6,3,83,99,1}; for(int i = 0 ; i < 10; i++) ms.push(a[i]); for(int i = 0 ; i < 10; i++){ try{ cout<<"before pop min value: "<<setw(3)<<ms.min(); cout<<" pop value: "<<setw(3)<<ms.pop(); cout<<" after pop min value: "<<setw(3)<<ms.min()<<endl; }catch(out_of_range e){ cout<<e.what(); } } system("PAUSE"); return 0;}
- 经典面试题21——包含min函数的栈
- 剑指offer面试题21包含Min函数的栈 经典的百度面试题
- 剑指offer代码解析——面试题21包含min函数的栈
- 剑指Offer:面试题21——包含min函数的栈(java实现)
- 剑指offer——面试题21:包含min函数的栈
- 剑指offer——面试题21:包含 min 函数的栈
- 面试题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函数的栈
- 伸长的守候
- C#写文件,知识点总是忘
- 左旋转字符串新思路
- If you want to paste code into IPython, try the %paste and %cpaste magic functions.
- 土坷垃的情怀
- 经典面试题21——包含min函数的栈
- 路上看水
- linux tar 命令,一直报错 tar: Removing leading `/' from member names (tar: 从成员名中删除开头的“/”)
- html页面自动刷新
- Linux 地址映射全过程(分段机制过程在Linux中不起作用)
- JS判断是否360浏览器代码
- 解放军美女网络尖兵,90余昼夜写代码40多万行
- 中央气象局天气预报城市对应的编码(到县为止)
- 完美解决ios4与ios5输入框随键盘移动问题