当前位置: 首页 > 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、-231 <= val <= 231 - 1

2、pop、top 和 getMin 操作总是在 非空栈 上调用

3、push, pop, top, and getMin最多被调用 3 * 104 次

思路:

建立一个正常栈,另外一个栈为最小栈

  1. push方法:如果第二个元素大于第一个元素,则最小栈不入,正常栈入,反之,都入

  1. pop方法:正常栈出,直到出的元素等于最小栈的栈顶元素,都出

代码:

class MinStack {private Stack<Integer> stack;private Stack<Integer> minStack;public MinStack() {this.stack=new Stack<>();this.minStack=new Stack<>();}public void push(int val) {stack.push(val);if (minStack.empty()){minStack.push(val);}else {if (val<=minStack.peek()) {minStack.push(val);}}}public void pop() {if (stack.empty()){return;}int x=stack.pop();if (x==minStack.peek()){minStack.pop();}}public int top() {if (stack.empty()){return -1;}return stack.peek();}public int getMin() {if (minStack.empty()){return -1;}return minStack.peek();}
}
http://www.lryc.cn/news/20394.html

相关文章:

  • C++学习笔记-重载运算符和重载函数
  • Java —— JDBC
  • 备战金三银四,熬夜半个月汇集大厂 Java 岗 1600 页面试真题
  • 9、面向对象、泛型与反射
  • Python使用百度通用API进行翻译
  • JavaScript 弹窗
  • 408复试day1
  • gdb openocd jlink arm-a9调试
  • Leetcode Solutions - Part 2
  • 外盘国际期货:围观那些奇葩的国际节日?
  • Kubernetes之服务的基本管理
  • TimeWheel时间轮算法原理及实现(附源码)
  • 【蓝牙mesh】Upper协议层介绍
  • NEXUS 6P刷机安装Edxposed
  • web、ES、vue等知识总结
  • 数据库第一章(王珊课后习题)
  • 设计模式(十一)----结构型模式之装饰者模式
  • lighthouse的介绍和基本使用方法
  • 分布式算法 - Raft算法
  • Python|每日一练|链表|双指针|数组|递归|图算法|单选记录:删除链表的倒数第 N 个结点|下一个排列|迷宫问题
  • 天线理论知识2——宽带天线介绍
  • 【计组笔记05】计算机组成与原理之虚拟存储器、指令系统、中央处理器CPU
  • 多功能土壤速测仪功能介绍
  • 《设计模式》命令模式
  • 开源物联网平台有哪些?
  • Tesla Autopilot,处理器和硬件
  • jianzhiOffer第二版难重点记录
  • C语言 | 问题20230225
  • 【机器学习笔记】Python基础笔记
  • js-DOM03-DOM对CSS的操作