十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
题目:

成都创新互联公司专注于湛江企业网站建设,成都响应式网站建设,购物商城网站建设。湛江网站建设公司,为湛江等地区提供建站服务。全流程按需网站设计,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路一:
通过每次在压入栈顶的元素与当前最小元素相比后,保存一遍最小元素,每次弹出,都弹出两个,这个就能得到栈当前最小元素了
代码:
class Solution {
public:
void push(int value) {
if(s1.size()==0)
{
s1.push(value);
int min=value;
s1.push(min);
}
else
{
int min=s1.top();
if(value s1;
}; 思路二:利用两个栈,一个栈用于压入数据,另一个栈用于压入数据时的最小元素。无论最小元素是不是压栈的元素,都保存到第二个栈中
代码:
class Solution {
public:
void push(int value)
{
if(s1.size()==0)
{
s1.push(value);
s2.push(value);
}
else
{
s1.push(value);
int min=s2.top();
if(min>value)
{
s2.push(value);
}
else
{
s2.push(min);
}
}
}
void pop()
{
if(!s1.empty())
{
s1.pop();
s2.pop();
}
}
int top() {
return s1.top();
}
int min() {
return s2.top();
}
private:
stack s1,s2;
};