【剑指offer 面试题21】包含min函数的栈
2015-06-23 14:03
555 查看
思路:
通过增加一个辅助栈保存每个状态对应的最小值。栈实现的不完整,应该还包含empty()等常规函数。
测试结果:
通过增加一个辅助栈保存每个状态对应的最小值。栈实现的不完整,应该还包含empty()等常规函数。
#include <iostream> #include <stack> using namespace std; template <typename T> class StackWithMin { public: void push(const T& value); void pop(); T getMin(); private: stack<T> DataStack; stack<T> MinStack; }; template <typename T> void StackWithMin<T>::push(const T& value) { DataStack.push(value); if(MinStack.size() == 0 || value < MinStack.top()) MinStack.push(value); else MinStack.push(MinStack.top()); } template <typename T> void StackWithMin<T>::pop() { DataStack.pop(); MinStack.pop(); } template <typename T> T StackWithMin<T>::getMin() { return MinStack.top(); } int main() { StackWithMin<int> s; cout<<"push 5"<<endl; s.push(5); cout<<"Min: "<<s.getMin()<<endl; cout<<"push 3"<<endl; s.push(3); cout<<"Min: "<<s.getMin()<<endl; cout<<"push 1"<<endl; s.push(1); cout<<"Min: "<<s.getMin()<<endl; cout<<"pop"<<endl; s.pop(); cout<<"Min: "<<s.getMin()<<endl; cout<<"pop"<<endl; s.pop(); cout<<"Min: "<<s.getMin()<<endl; cout<<"push 10"<<endl; s.push(10); cout<<"Min: "<<s.getMin()<<endl; }
测试结果:
push 5 Min: 5 push 3 Min: 3 push 1 Min: 1 pop Min: 3 pop Min: 5 push 10 Min: 5
相关文章推荐
- 黑马程序员--Java基础Day13
- 黑马程序员--Java基础Day12
- 前端面试题大全一
- 黑马程序员——正则表达式
- 黑马程序员JAVA笔记7--IO
- 黑马程序员--函数的理解和函数重载
- 黑马程序员——基础知识总结_多线程
- 程序员必须知道的编程格言
- 据说年薪30万的Android程序员必须知道的帖子【转载】
- 面试成功的五条最重要原则!
- 程序员_优秀程序员01
- web前端面试常见问题三------浮动原理和清除浮动
- 剑指offer 面试题5——从头到尾打印链表
- 这些哭笑不得的情景,每个程序员都可能面对
- 资料_书籍_PDF_《高效程序员的45个习惯》
- 8个PHP数组面试题
- 黑马程序员--Java基础知识总结
- 程序员在周末学习的8个实用技术
- 程序员十层楼
- ios开发面试常见问题及答案