#include<iostream>
#include<stack>
using namespace std;
template<typename T>
class Stack
{
public:
Stack()
{}
~Stack()
{}
void Push(const T& val)
{
if (s1.empty() && s2.empty())
{
s1.push(val);
s2.push(val);
}
else
{
if (s2.top() > val)
s2.push(val);
s1.push(val);
}
}
void Pop()
{
if (s1.top() <= s2.top())
s2.pop();
s1.pop();
}
T Min()
{
return s2.top();
}
private:
stack<T> s1;//s1用来保存数据
stack<T> s2;//s2用来保存较小的数据
};
int main()
{
Stack<int> s;
s.Push(4);
s.Push(7);
s.Push(3);
s.Push(5);
s.Push(2);
s.Push(8);
s.Push(9);
s.Push(1);
cout << s.Min() << endl;
s.Pop();
s.Pop();
s.Pop();
cout << s.Min() << endl;
system("pause");
return 0;
}
实现一个栈Stack,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
最新推荐文章于 2022-03-22 11:57:15 发布