标签:style blog class c code color
题意:
定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。
要求函数min、push 以及pop 的时间复杂度都是O(1)。
思路:定义两个栈,一个用来记录数据的插入和删除,一个用来存储最小值的变化
代码如下:
template <class T> class Stack { public: Stack(int len=100); T Min(); T Pop(); void Push(T val); private: T top1,top2; T *stack1,*stack2; //stack2用来存储最小值的栈 }; template <class T> Stack<T>::Stack(int len) { top1 = top2 = -1; stack1 = new T[len] ; stack2 = new T[len] ; } template <class T> T Stack<T>::Min() { return stack2[top2]; } template <class T> T Stack<T>::Pop() { T temp = stack1[top1--] ; if(stack2[top2] == temp) top2--; return temp; } template <class T> void Stack<T>::Push(T val) { stack1[++top1] = val ; if(top2 == -1) stack2[++top2] = val; else if(val <= stack2[top2]) stack2[++top2] = val ; }
微软100题系列之-----设计包含min函数的栈,布布扣,bubuko.com
标签:style blog class c code color
原文地址:http://blog.csdn.net/hp_satan/article/details/26494505