思路:
-
准备两个栈,一个Data,一个Min
-
Data正常压栈,用于实现栈的基本功能
-
Min一定要和Data元素个数相同,但是要保证一直压入的是栈中的最小元素
#include<iostream>
#include<stack>
using namespace std;
class SpecialStack
{
public:
stack<int> Data;
stack<int> Min;
void push(int data)
{
Data.push(data); //data栈正常压栈
//min栈始终压入整个栈中的最小元素
if (Min.empty())
Min.push(data);
else if (data < Min.top())
Min.push(data);
else
Min.push(Min.top());
}
void pop()
{
//出栈的话data和min保持同步
Data.pop();
Min.pop();
}
int GetMin()
{
return Min.top(); //返回Min栈顶元素,不弹出
}
};