leetcode腾讯精选练习50 题(155. 最小栈)_最小栈的题-程序员宅基地

技术标签: 腾讯精选练习50题  最小栈  LeetCode  

leetcode腾讯精选练习50 题(155. 最小栈)

题目描述

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

push(x) – 将元素 x 推入栈中。
pop() – 删除栈顶的元素。
top() – 获取栈顶元素。
getMin() – 检索栈中的最小元素。

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/min-stack

解题思路

从题目来看,选择了list类型来保存数据,然后push(x),pop()的功能使用list自带的方法可以实现,top() 使用list的索引也可以实现,该题的重点在于getMin()的实现,但遍历元素又不行,因为要求在常数时间内,即O(1)时间复杂度。

所以采用其他变量来保存最小元素,开始考虑的是采用numbers类型,但运行测试后发现pop后最小值无法回溯;最采用list保存最小元素解决了问题

代码

  1. 使用了list保存数据,int保存最小元素。运行结果出现问题(pop后最小值无法回溯)
class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.data = []
        self.minData = float('inf')

    def push(self, x: int) -> None:
        self.data.append(x)
        if x < self.minData:
            self.minData = x
    def pop(self) -> None:
        self.data.pop()
    def top(self) -> int:
        return self.data[-1]
    def getMin(self) -> int:
        return self.minData
  1. 使用了list保存数据,同时list保存最小元素,运行通过
class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.data = []
        self.minData = []

    def push(self, x: int) -> None:
        self.data.append(x)
        if len(self.minData) == 0:
            self.minData.append(x)
        elif x < self.minData[-1]:
            self.minData.append(x)
        else:
            self.minData.append(self.minData[-1])
    def pop(self) -> None:
        self.data.pop()
        self.minData.pop()
    def top(self) -> int:
        return self.data[-1]
    def getMin(self) -> int:
        return self.minData[-1]


# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zjw19941003/article/details/98470485

智能推荐

6位数码管电子时钟c语言程序,利用AT89C51单片机设计简易电子钟(六位),通过8位LED数码管实现时间显示;系统可以通过三个按键实现时间...-程序员宅基地

文章浏览阅读1.7k次。利用AT89C51单片机设计简易电子钟(六位),通过8位LED数码管实现时间显示;系统可以通过三个按键实现时间 常见问题汇编可以么LED_1 EQU 30HLED_2 EQU 31HLED_3 EQU 32HLED_4 EQU 33HLED_5 EQU 34HLED_6 EQU 35HLED_7 EQU 36HLED_8 EQU 37HTIMER EQU 38HMODE EQU 39H ;模式判断..._电子钟3个按钮

压缩命令tar详解_tar -czvf-程序员宅基地

文章浏览阅读1.2k次。压缩命令tar详解在Linux中常见的压缩包格式为*.tar.gz *.zip *.tar *.bz2 *.gz *.tgz压缩格式:tar [可选项] [压缩文件名] [需要压缩的文件]参数: -z 通过gzip压缩或者解压 -c 创建新的tar包 -v 显示详细的tar命令的压缩过程 -f 指定压缩文件的名称 -x 解开tar包 -C(大写) 指定解压的目录路径 --exclude=PATH 打包时排除不需要_tar -czvf

LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project_ltp最新版压测linux-程序员宅基地

文章浏览阅读3w次,点赞5次,收藏47次。今天考虑如何将这个变态的系统(说它变态,一点都不过,因为是debian和Ubantu 杂交的,设计者都是这么说的)的功能测试程序化,结果论坛上有人建议考虑 IBM 的 linux test project 下载下来,安装了十来分钟,最后运行时报错,安装不准确,糟糕的变量名等,奇怪呀,安装挺顺利的结果不能用,这系统,哎,就是特殊呀!不管了,IBM 的 linux test project 也_ltp最新版压测linux

企业微信公众号自定义消息模板_企业微信消息模板-程序员宅基地

文章浏览阅读2.8k次。1.首先打开消息模板(如果没有需要添加):广告与服务-消息模板。基本所有的内容都要填写,包括参考示例,否则“提交”按钮不可用。自定义消息模板是有这个功能的,但是很隐蔽,特此记录(,提交后记录到哪里了,我现在还不知道。2.自定义模板:模板库-类目模板(3.打开“新增模板”_企业微信消息模板

会议 | 2017VLDB 参会总结&论文鉴赏-程序员宅基地

文章浏览阅读482次。​前言2017年8月28日到9月1日,VLDB 2017在慕尼黑工业大学举行,作为数据库领域的三大顶级会议之一,吸引了领域内大量专家、学者以及产业界人士参加。阿里巴巴集团是本次大会的黄金赞助商之一。蚂蚁金服有多位同学参加这次大会,其中包括来自OceanBase的同学和来自GeaBase的同学。本文是同学们此次参会的学习摘要。▲图1会议展区门口..._star schema benchmark算子实现

运用域用户实现asp.net把文件上传到另外一台服务器_域用户能否加到iis_iusers-程序员宅基地

文章浏览阅读301次。运用域用户实现asp.net把文件上传到另外一台服务器asp.net把文件上传到另外一台服务器有关截图asp.net把文件上传到另外一台服务器关于asp.net如何把文件上传到另外一台服务器,查到几篇文章都是在两个服务器创建相同名称和密码的用户,然后在Global.asax中运行 Net use。我在IIS7.0(Windows 2008 R2)下按有关文章操作,都没能实现,除非把有关文件授权..._域用户能否加到iis_iusers

随便推点

吲哚菁绿ICG-Amine/NH2荧光标记和成像1686147-55-6_icg吲哚菁绿色荧光颜色怎么观察-程序员宅基地

文章浏览阅读679次。ICG-Amine是一种荧光染料,ICG-Amine具有良好的荧光性能,可用于生物医学研究中的荧光标记和成像。ICG-Amine的物理性质如下:化学式:C47H56N4O4S,分子量为773.04,外观:深绿色粉末溶解性:易溶于水和甲醇,不溶于乙醇和乙醚;荧光发射峰:约为880 nm激发波长:约为780 nm;ICG-Amine的荧光性能稳定,荧光强度高,且对生物体不具有毒性和免疫原性,因此被应用于生物医学领域的荧光标记和成像研究中,如血管造影、光动力治疗等。CAS号:1686147-55-6。_icg吲哚菁绿色荧光颜色怎么观察

用GD32替换正点原子STM32F103ZET6_正点原子gd32-程序员宅基地

文章浏览阅读1.4w次,点赞59次,收藏50次。你是个成熟的工程师了,要学会偷偷用GD32换室友的STM32芯片_正点原子gd32

嵌入式系统移植——Bootloader移植_openharmony移植中的bootloader-程序员宅基地

文章浏览阅读941次。命令类型:环境变量、数据传输、存储器访问、加载运行printenv:pri----打印所有环境变量setenv:set------设置环境变量值saveenv:save---保存环境变量值bootdelay:进入自启动模式的倒数计时gatewayip:网关地址ipaddr:设备网络地址----板子netmask:子网掩码serverip:服务端地址---linux虚拟机bootcmd:进入自启动模式后,uboot要执行的命令。_openharmony移植中的bootloader

UIDeviceOrientation与UIinterfaceOrientation以及屏幕旋转的方式_xcode3 uiinterfaceorientation-程序员宅基地

文章浏览阅读1.5k次。在日常开发过程中,经常会遇到转屏的需求,最近遇到一个转屏相关的bug,顺带着总结下iOS端实现转屏需要做的事情。首先需要明确两个概念,设备方向(UIDeviceOrientation)和视图方向(UIInterfaceOrientation)UIDeviceOrientation:不受锁定屏幕方向的影响,通过[UIDevice currentDevice].orient_xcode3 uiinterfaceorientation

C#的WebSocket使用简记_system.net.websockets-程序员宅基地

文章浏览阅读8.4k次。C#的WebSocket使用简记`ClientWebSocket`属性方法代码`async/await`参考链接ClientWebSocket这里用到的核心代码就是ClientWebSocket类。提供用于连接到WebSocket服务的客户端。程序集:System.Net.WebSockets.Client.dll;命名空间:System.Net.WebSockets;继承:Object—>WebSocket—>ClientWebSocke;csharp public seal_system.net.websockets

J-Link下载器刷入固件_j-link ob 固件起始地址-程序员宅基地

文章浏览阅读698次,点赞4次,收藏3次。需要一个可以正常使用的下载器和一个待下入固件的下载器。_j-link ob 固件起始地址