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

LeetCode 155. 最小栈

 题目描述  

设计一个支持 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.

解法

1.辅助栈

解题思路

       直接建立一个栈,对于push、pop、top这三个操作都可以在O(1)的时间内完成,唯独getmin无法实现,这是这道题的考察点。我们采用空间换时间的方式,额外使用一个辅助栈来保存栈中的最小元素。每次进栈,需要判断该元素是不是最小元素,把最小元素放到s_min栈的栈顶(注意不能对空栈进行top操作),出栈时,需要把两个栈顶元素同时出栈,以保证信息同步。

class MinStack {
private:stack<int> s;stack<int> s_min;
public:MinStack() {}void push(int val) {s.push(val);int temp = val;if(!s_min.empty()){temp = min(temp,s_min.top());}s_min.push(temp);}void pop() {s.pop();s_min.pop();}int top() {return s.top();}int getMin() {return s_min.top();}
};

        时间复杂度O(1),空间复杂度O(N)

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

相关文章:

  • 杭州企业网站建设方案大连零基础网站建设教学公司
  • 使用腾讯云函数和云存储开发android app更新功能开发遇到的坑和解决方案
  • 韶关市建设局网站梅州做网站
  • 服装网站建设的规划百度推广多少钱
  • 电机驱动的总结和实战
  • php儿童摄影网站源码浏览器推广哪个平台好
  • 做论坛网站怎么赚钱吗江苏省交通建设局网站首页
  • 虚拟地址空间:揭秘Linux内存
  • 嵌入式开发安装Samba服务实现方法
  • 网站开发人员要求备案个人可以做视频网站
  • 网站为契机建设校园数字化上海网站建设哪家技术好
  • 人工智能决策系统和传统决策模型相比有什么优势?
  • 简述dw网站建设步骤网站建设哪家便宜
  • 未来新科技:纳米酶——类酶纳米材料的突破性应用与前景
  • 数据结构(c++版):深入理解哈希计数器
  • 网站侧边栏代码网站设计制作哪种快
  • Flutter SlideTransition 实现平移动画
  • Android EDLA 认证提测前的基本开发和准备简要说明
  • 潍坊网站设计制作seo软件服务
  • 心连网网站wordpress4.9博客模板
  • 数据库要进行分表分库是开发一个项目就要设计好了,还是上线后根据需要再分表分库?
  • TimeBridge: Non-Stationarity Matters for Long-term Time Series Forecasting论文阅读
  • 揭阳网站建设解决方案太原注册公司流程
  • 第2节:程序逻辑与控制流——让程序“思考”
  • 别人网站 自己的二级域名国外家居创意空间设计
  • 东营科技官方网站网站开发入门书籍推荐
  • CSS Grid与Flexbox:2025年响应式布局终极指南
  • 在哪公司建设网站网站优化团队
  • 郑州汉狮哪家做网站好网页设计技巧
  • 【Jenkins 】配置从节点之后,环境配置