题目描述
算法分析
题目要求 O(1) 时间复杂度实现上述功能,很自然想到,用空间换时间的方法,所以建立一个辅助栈,用来存储当前栈内所有元素的最小值,数据栈每压入一个元素,辅助栈同时将数据栈内所有元素的最小值压入,同步更新即可实现要求
程序代码
class Solution
{
stack<int> DataStack;//数据栈
stack<int> HelpStack;//辅助栈
int MinData = 0;
public:
void push(int value)
{
if(DataStack.empty())
{
MinData = value;
DataStack.push(value);
HelpStack.push(MinData);
}
else
{
MinData = MinData<value? MinData:value;
DataStack.push(value);
HelpStack.push(MinData);
}
}
void pop()
{
if(DataStack.empty())
return;
else
{
DataStack.pop();
HelpStack.pop();
}
}
int top()
{
if(DataStack.empty())
return 0;
else
return DataStack.top();
}
int min()
{
if(HelpStack.empty())
return 0;
else
return HelpStack.top();
}
};