包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min push pop的时间复杂度都是o(1)
思路:定义一个数据栈和一个辅助栈,数据栈正常进行push pop操作的时候,
辅助栈观察栈顶元素与当前元素的大小,存小的,即使自身小也存。
参考代码:
#include <iostream>
#include <stack>
using namespace std;
stack<int> data;
stack<int> aid;
void mypush(int num)
{
data.push(num);
if(aid.size() == 0 || num < aid.top())
aid.push(num);
else
aid.push(aid.top());
}
void mypop()
{
data.pop();
aid.pop();
}
int mymin()
{
return aid.top();
}
int main()
{
for(int i = 0;i < 10;i++)
mypush(i);
int min = mymin();
cout << min <<endl;
return 0;
}