博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode之Min Stack 实现最小栈
阅读量:5931 次
发布时间:2019-06-19

本文共 1664 字,大约阅读时间需要 5 分钟。

LeetCode相关的网上资源比较多,看到题目一定要自己做一遍,然后去学习参考其他的解法。

链接: 

题目描述:

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

push(x) -- Push element x onto stack.

pop() -- Removes the element on top of the stack.

top() -- Get the top element.

getMin() -- Retrieve the minimum element in the stack.

设计一个最小栈,支持入栈,出栈,获取栈顶元素,获取栈最小值,要求时间复杂度0(1).

 

Stack(栈)是First in-Last out的数据结构。如果不考虑时间复杂度,实现题目的要求都比较简单,现在限定了不超过常量时间O(1),

就不能用简单的排序过滤实现了。

另外,栈顶(top)指的是允许操作数据的一端,要与堆栈中高低地址不同的栈顶和栈底区别开来,以前我经常搞混。

public class MinStack {        //声明数据栈    private Stack
elementsStack=new Stack
(); //声明辅助栈 private Stack
supportStack=new Stack
(); /** * 考虑到时间复杂度的需求,添加一个辅助栈, * 每次入栈时将元素分别存入数据栈和辅助栈, * 辅助栈中的数据始终保持最小值在栈顶,需要获取最小值时,直接Peek()辅助栈即可。 */ public static void main(String[] args){ MinStack minStack=new MinStack(); //以下测试用例 minStack.push(0); minStack.push(1); minStack.push(0); System.out.print(minStack.getMin()); minStack.pop(); System.out.print(minStack.getMin()); } public void push(int x) { //始终保持辅助栈顶是最小元素 if(supportStack.empty() || x <= supportStack.peek()){ supportStack.push(x); } elementsStack.push(x); } public void pop() { //更新辅助栈 if(elementsStack.peek().equals(supportStack.peek())){ supportStack.pop(); } elementsStack.pop(); } public int top() { return elementsStack.peek(); } public int getMin() { //辅助栈 return supportStack.peek(); }}

 提交,可以AC.

转载地址:http://pnktx.baihongyu.com/

你可能感兴趣的文章
mysql数据库 主从复制的配置方法
查看>>
Linux 第一天: (07月20日) 练习和作业
查看>>
绘制和重绘,无效矩形和有效矩形
查看>>
Linux学习笔记十二周一次课(4月23日)
查看>>
打开Openstack dashboard出现Internal Server Error
查看>>
Java八种基本数据类型的比较及其相互转化
查看>>
SSD: Single Shot MultiBox Detector 解读
查看>>
C# .net core Assembly使用GetEntryAssembly替代GetExecutingAssembly
查看>>
java(十六) CSS
查看>>
Excel在每个物料下插入两行
查看>>
GLIBCXX_3.4.18 not found的解决办法
查看>>
Linux文件权限详解大全
查看>>
文件权限设置
查看>>
JEECG 开源社区JAVA视频网盘大全分享
查看>>
输入输出重定向及管道
查看>>
9.4/9.5 sed
查看>>
MogileFS学习笔记(1)
查看>>
STM32F1xx时钟中断配置
查看>>
拯救傲娇的Android Studio
查看>>
IOS地图开发及定位
查看>>