【剑指Offer】【栈】包含min函数的栈
2024-09-08 18:59:12
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
A:因为包含了入栈和出栈的操作,存储最小数的变量不能单单只是一个int的变量,应该用一个辅助栈来存储
所以创建数据站存储入栈的数据,创建最小数栈存储最小数
入栈:数据栈入栈,若最小栈为空 || value小于最小栈的顶元素,则把value入栈,否则再入一次栈顶元素
出栈:如果栈有元素,则出栈
取栈顶:返回数据栈栈顶
取最小值:返回最小值栈栈顶
class Solution { public:
void push(int value)
{
s_data.push(value);
if((s_min.empty() == true) || (value < s_min.top()))
{
s_min.push(value);
}
else
{
s_min.push(s_min.top());
}
}
void pop()
{
if(s_data.top() > 0 && s_min.top() > 0)
{
s_min.pop();
s_data.pop();
}
}
int top()
{
return s_data.top();
}
int min()
{
return s_min.top();
}
private:
stack<int> s_data;
stack<int> s_min;
};
相关题目:
最小栈:实现一个最小栈,有三种操作,min:得到栈中的最小值,push:在栈顶插入一个元素,pop:弹出栈顶元素,使这三种操作的时间复杂度都是O(1)
获取n维数组的最大深度:输入参数为字符串型的n维数组,数组的每一项值为数组 或 int型数字。请实现一个函数,可以获取列表嵌套列表的最大深度为多少。
中缀表达式转后缀表达式:将中缀表达式转为后缀表达式,输入 a+b*c/d-a+f/b 输出 abc*d/+a-fb/+
最新文章
- 循序渐进Python3(十一) --5-- 同源策略
- SqlServer2008 无法修改表,超时时间已到 在操作完成之前超时解决方法
- android之网络操作(1)
- js里面的等于号--
- jQuery实现登录提示
- 认识与学习BASH(中)
- IDC机房动力环境设备维护
- 【转】20个Java 代码生成器
- Minimum Size Subarray Sum 解答
- #include <;boost/function.hpp>;
- ListView+CheckBox两种解决方式及原因分析
- ++i,i++和i += 1的区别
- 解决mssql localdb 中文乱码问题
- java构建学生管理系统(一)
- PHP Misc. 函数
- InnoDB页压缩技术
- 【eclipse】mybatis配置文件创建与mapper接口文件创建
- mysql 开发基础系列22 SQL Model
- PostGIS空间查询
- Instruments学习之Allocations