题目

思路

左神讲过的经典算法,维护两个栈:

  • stack,用来存储数据
  • minStack,用来存储每个位置情况下的最小值,类似于动态规划。

每次入栈2个元素,一个是入栈的元素本身,一个是当前栈元素的最小值。
直接上例子,一看就明白了。

输入:

["MinStack","push","push","push","push","getMin","pop","getMin","pop","getMin","pop","getMin"]
[[],[2],[0],[3],[0],[],[],[],[],[],[],[]]

预期结果:

[null,null,null,null,null,0,null,0,null,0,null,2]

过程详解:

push/pop 第 0 个元素之后:
stack:      2
minStack:   2 push/pop 第 1 个元素之后:
stack:      2 0
minStack:   2 0 push/pop 第 2 个元素之后:
stack:      2 0 3
minStack:   2 0 0 push/pop 第 3 个元素之后:
stack:      2 0 3 0
minStack:   2 0 0 0 push/pop 第 2 个元素之后:
stack:      2 0 3
minStack:   2 0 0 push/pop 第 1 个元素之后:
stack:      2 0
minStack:   2 0 push/pop 第 0 个元素之后:
stack:      2
minStack:   2

题解

class MinStack {int pos;int[] stack; // 普通栈int[] minStack; // 最小栈,存放当前位置最小值/*** initialize your data structure here.*/public MinStack() {stack = new int[10000];minStack = new int[10000];pos = -1;}public void push(int x) {pos++;stack[pos] = x;if (pos == 0)minStack[pos] = x;elseminStack[pos] = minStack[pos - 1] < x ? minStack[pos - 1] : x;print();}public void pop() {pos--;print();}public int top() {return stack[pos];}public int getMin() {return minStack[pos];}public void print() {System.out.println("\npush/pop 第 " + pos + " 个元素之后:");System.out.print("stack:\t\t");for (int i = 0; i <= pos; i++) {System.out.print(stack[i] + " ");}System.out.println();System.out.print("minStack:\t");for (int i = 0; i <= pos; i++) {System.out.print(minStack[i] + " ");}}
}/*** Your MinStack object will be instantiated and called as such:* MinStack obj = new MinStack();* obj.push(x);* obj.pop();* int param_3 = obj.top();* int param_4 = obj.getMin();*/

leetcode 155. 最小栈(常数时间获取最小值,需要维护两个栈)相关推荐

  1. 《LeetCode力扣练习》剑指 Offer 09. 用两个栈实现队列 Java

    <LeetCode力扣练习>剑指 Offer 09. 用两个栈实现队列 Java 一.资源 题目: 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 de ...

  2. leetcode - 155. 最小栈

    设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) – 将元素 x 推入栈中. pop() – 删除栈顶的元素. top() – 获取栈顶元素. get ...

  3. leetcode 155. 最小栈

    难度:简单 频次:59 题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack 类: MinStack() 初始化堆栈对象. void ...

  4. LeetCode:155. 最小栈

    题目链接 155.最小栈 题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. ...

  5. Leetcode 155. 最小栈 (每日一题 20210923)

    设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈.push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获取栈顶元素. ...

  6. C++实现双栈结构(一个顺序表中使用两个栈)

    因为平常栈中push的数据不会太多,为了节约空间,所以可以在一个顺序表中使用两个栈 结构图: 在这里我会留一个空间用来判断栈是否满! #include <iostream> using n ...

  7. 面试题 03.04. 化栈为队/面试题09. 用两个栈实现队列/232. 用栈实现队列

    2020-05-08 1.题目描述 用两个栈实现一个队列 2.题解 将一个栈用来进行入操作,另一个进行出操作,入栈直接入,出栈的时候如果是空的则把另一个 栈中的所有元素移动过来,再进行出栈,否则直接出 ...

  8. LeetCode 155.最小栈

    设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack 类: MinStack() 初始化堆栈对象. void push(int val) 将元 ...

  9. 【LeetCode】剑指 Offer 09. 用两个栈实现队列

    [LeetCode]剑指 Offer 09. 用两个栈实现队列 文章目录 [LeetCode]剑指 Offer 09. 用两个栈实现队列 一.双栈 总结 一.双栈 维护两个栈,第一个栈支持插入操作,第 ...

最新文章

  1. 探测参考信号(Sounding Reference Signal)
  2. hdu 3183 A Magic Lamp(给一个n位的数,从中删去m个数字,使得剩下的数字组成的数最小(顺序不能变),然后输出)...
  3. ​可扩展的公有云媒体服务设计解析
  4. SAP UI5 应用读取 CSRF token 的 HTTP head 请求逻辑解析
  5. 【渝粤题库】国家开放大学2021春1359高级英语写作题目
  6. Atitit postgre sql json使用法 目录 1.1.1. 插入数据 1 2. json数据的常见操作 1 1.1.1.插入数据 插入数据可以直接以json格式插入: insert
  7. mfc 子窗体 按钮不触发_PIE二次开发在子窗体中选择主窗体中的文件
  8. 自制计算器(C语言的简单实现)(可多次使用)
  9. Wifi密码破解(rtl8818linux驱动安装)
  10. pdf editor android,MaxiPDF PDF editor builder
  11. 中国实验室玻璃器皿行业市场供需与战略研究报告
  12. 电脑桌面计算机打开不显示硬盘信息,Win10电脑下移动硬盘不显示盘符如何解决...
  13. CTO、技术总监、首席架构师的区别
  14. Win10禁止更新设备驱动的几种方式
  15. 转载:王垠 的《完全用Linux工作》
  16. 经典算法题型(二):二维数组(平面地图)的递归操作
  17. 全球主流云桌面传输协议
  18. 如何用MATLAB生成三维模型并导入PPT
  19. mysql against_Mysql 全文搜索 Match Against用法
  20. 计算机主板最新芯片组品牌,最新的主板芯片组排行榜【详解】

热门文章

  1. nexus 代理阿里云_Azure容器镜像代理服务失效
  2. 数据模型与决策_数据模型与决策复习资料拿走不用客气
  3. 安卓系统手机软件_2M不到的安卓神器!有了这五款软件,iphone用户都羡慕
  4. TIS教程01-安装
  5. 27计算机表演赛命题,27届计算机表演赛命题搜索赛答案(数学3)
  6. 在ubuntu中使用cookiecutter搭建django项目时命令迟迟没有反应
  7. BZOJ3209(n的二进制表示中1的个数的乘积)
  8. Anbox 和 LXC 代码规模
  9. LevelDB 源码剖析(一)准备工作:环境搭建、接口使用、常用优化
  10. 第48讲:分布式利器 Scrapy-Redis 原理