题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的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/+

最新文章

  1. 循序渐进Python3(十一) --5-- 同源策略
  2. SqlServer2008 无法修改表,超时时间已到 在操作完成之前超时解决方法
  3. android之网络操作(1)
  4. js里面的等于号--
  5. jQuery实现登录提示
  6. 认识与学习BASH(中)
  7. IDC机房动力环境设备维护
  8. 【转】20个Java 代码生成器
  9. Minimum Size Subarray Sum 解答
  10. #include &lt;boost/function.hpp&gt;
  11. ListView+CheckBox两种解决方式及原因分析
  12. ++i,i++和i += 1的区别
  13. 解决mssql localdb 中文乱码问题
  14. java构建学生管理系统(一)
  15. PHP Misc. 函数
  16. InnoDB页压缩技术
  17. 【eclipse】mybatis配置文件创建与mapper接口文件创建
  18. mysql 开发基础系列22 SQL Model
  19. PostGIS空间查询
  20. Instruments学习之Allocations

热门文章

  1. Windows10使用VMware安装centos
  2. 两个jsp界面之间使用window.location.href使用?传递参数以及接受参数
  3. Angular 依赖注入的错误 NullInjectorError, No provider for XXX
  4. certutil工具使用和bypass学习
  5. 借助mapshaper的简化来修复geojson的拓扑错误
  6. 一个好的程序应该像AK47
  7. 使用 WSDL 指定的标准 SOAP 消息格式
  8. 【jquery easyUI 拓展
  9. uniapp引入微信小程序自定义视频组件--记录
  10. iOS Programing