当前位置: 首页 > news >正文

155.最小栈

155. 最小栈 - 力扣(LeetCode)

一、思路分析

        题目要求我们设计一个栈,其他的都还好说,C++已经提供好了 stack ,唯一需要我们解决的就是获取栈中最小的数。

思路一:创建一个栈 st 和一个用于存放最小值的变量 min。

        第一次入栈的时候,就给 min 存放,后面每次入栈时都比较一下,如果比 min 还小,min 就存放新的值。但是,如果出栈呢?我们不知道上一个最小值是谁,所以这种思路pass

思路二:创建两个栈,一个用来存放数据 _st,一个用来存放最小值 _min_st。

        由于存放最小值的变量换为栈,我们就得以知道上一个最小值是谁,目前分析,可行。

        当第一个数据入栈,那肯定要给两个栈都入栈。后面入栈的时候,根 _min_st 的栈顶比较,如果小,就给 _min_st  和 _st 都入栈,否则,只给 _st 入栈;出栈的时候,就判断 _st 的栈顶是否根 _min_st 的栈顶一致,一致,两个就都出栈

二、动图演示

三、完整代码

class MinStack {
public:MinStack() {}void push(int val) {_st.push(val);if(_min_st.empty() || val <= _min_st.top()){_min_st.push(val);}}void pop() {if(_st.top() == _min_st.top()){_min_st.pop();}_st.pop();}int top() {return _st.top();}int getMin() {return _min_st.top();}
private:stack<int> _st;stack<int> _min_st;
};/*** Your MinStack object will be instantiated and called as such:* MinStack* obj = new MinStack();* obj->push(val);* obj->pop();* int param_3 = obj->top();* int param_4 = obj->getMin();*/

Note:拷贝构造函数会经过初始化列表,对于类类型,会调用它们的拷贝构造,所以我们这里的拷贝构造可以空着不写

http://www.dtcms.com/a/533976.html

相关文章:

  • 网站开发和移动开发成都市房产信息网
  • 乐平市建设局网站精品课程网站建设设计方案
  • 厦门网站建设方案服务公司网站开发建设什么会计科目
  • 深圳网站建设相关推荐wordpress启用主题
  • 为什么360极速浏览器X新建标签页总在所有标签页的最右侧打开?用键盘Ctrl+T新建标签页总在所有标签页最右侧打开解决办法。
  • 中国建设银行网站登陆安徽百度关键词优化
  • 德州网站开发培训网站策划专员招聘
  • 想找个人做网站广州微网站建设
  • 南通e站网站建设外国人在中国注册公司需要什么条件
  • 婚纱摄影网站开题报告河北黄页网
  • 网站 色调企业网站做多大尺寸
  • 人工智能学习中深度学习之python基础之高阶函数
  • 网站前台乱码2022最新永久地域网名
  • 备案网站可以做影视站网站开发中视屏怎样编辑到网页上
  • 株洲网站制作公司在哪里郑州网络推广广告公司
  • 做动图的网站知乎微网站站点名称
  • 提示词类型与示范学习机制(附 Qwen 模型实战代码)
  • 【016】Dubbo3从0到1系列之时间轮
  • 通州区住房和城乡建设部网站一级a做爰片免费网站瑜伽
  • cglib动态代理实现
  • 1.4.4 大数据方法论与实践指南-成本治理(省钱)
  • 自己的公司怎么做网站wordpress注册插件中文版
  • 中华建设杂志网站记者绍兴网站建设报价
  • 做家装的网站有哪些如何做网络推广
  • mysql存储过程和函数
  • 青海省高等级公路建设管局网站免费windows10云主机下载
  • 西安市建网站给单位做网站需要多少钱
  • 网站建设实践鉴定铜川泰士公馆建设网站
  • 电子商务网站有哪些内容上海网站开发团队
  • 长春电商网站建设wordpress js上传图片