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

【力扣】最小栈

  🔥博客主页: 我要成为C++领域大神
🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️

本博客致力于知识分享,与更多的人进行学习交流

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

示例 1:

输入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]输出:
[null,null,null,null,-3,null,0,-2]解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.

辅助栈

思路

创建两个栈,一个栈s1正常存放数据,另外一个栈s2存放最小值。每次进行push时,s1直接调用栈的push操作,s2在存放数据时,需要进行比较压栈元素与栈顶元素大小关系,若新元素大于栈顶元素,则重复压入栈顶元素,否则压入新元素。最后获取s2的栈顶,就是我们要找的最小元素。

代码实现

class MinStack {
public:stack<int> s1;stack<int> s2;MinStack() {}void push(int val) {s1.push(val);if (s2.empty())s2.push(val);else if (val >= s2.top())s2.push(s2.top());elses2.push(val);}void pop() {if (s1.empty())return;if (s2.empty())return;s1.pop();s2.pop();}int top() {if (!s1.empty())return s1.top();elsereturn -1;}int getMin() {if (!s1.empty())return s2.top();elsereturn -1;}
};/*** 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();*/

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Unity C#基础】浅谈List底层逻辑
  • npm相关指令
  • 现场可重构CPLD芯片应用案例—蓝牙音箱
  • PHP 与 1688 详情 API 接口的完美对接
  • UE4-初见虚幻引擎
  • java包装类 及其缓存
  • 浏览器的缓存
  • PyCharm软件初始化配置
  • 使用 Flask 3 搭建问答平台(三):注册页面模板渲染
  • 华为OD机考题(基础API)
  • 【Linux】服务器安装SSH
  • 人工智能算法工程师(中级)课程14-神经网络的优化与设计之拟合问题及优化与代码详解
  • 通过docker构建基于LNMP的WordPress项目
  • 微信小程序基本语法
  • WPF实现一个带旋转动画的菜单栏
  • 网络传输文件的问题
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • express如何解决request entity too large问题
  • Java多态
  • Linux gpio口使用方法
  • Linux链接文件
  • nodejs调试方法
  • React中的“虫洞”——Context
  • Redis 懒删除(lazy free)简史
  • RxJS: 简单入门
  • Spring框架之我见(三)——IOC、AOP
  • vue-cli3搭建项目
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 翻译--Thinking in React
  • 开发基于以太坊智能合约的DApp
  • 力扣(LeetCode)357
  • 让你的分享飞起来——极光推出社会化分享组件
  • 赢得Docker挑战最佳实践
  • Nginx实现动静分离
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #if 1...#endif
  • #传输# #传输数据判断#
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (52)只出现一次的数字III
  • (9)目标检测_SSD的原理
  • (NSDate) 时间 (time )比较
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十一)手动添加用户和文件的特殊权限
  • (译)2019年前端性能优化清单 — 下篇
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .gitignore文件使用
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!