题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的函数。在该栈中,调用min,push,pop的时间复杂度都为O(1)。

#include<iostream>#include<vector>usingnamespacestd;template<classT>classStack{public:voidpush(Tdata){if(_array.size()==0){_array.push_back(data);_array1.push_back(0);}else{intindex=_array1.size()-1;if(data>=_array[index]){_array.push_back(data);_array1.push_back(_array1[index]);}else{_array.push_back(data);_array1.push_back(index+1);}}}voidpop(){intindex=_array.size()-1;_array[index]=NULL;_array1[index]=NULL;}TMin(){intend=_array1.size()-1;intindex=_array1[end];return_array[index];}private:vector<T>_array;vector<int>_array1;};voidtest(){Stack<int>s1;s1.push(3);s1.push(7);s1.push(4);s1.push(1);s1.push(8);s1.push(0);cout<<s1.Min()<<endl;}intmain(){test();system("pause");return0;}

结果: