每日两题 / 20. 有效的括号 155. 最小栈(LeetCode热题100)

20. 有效的括号 - 力扣(LeetCode)
image.png

遇到左括号入栈
遇到右括号判断栈顶是否为匹配的左括号
最后判断栈是否为空

func isValid(s string) bool {var stk []runefor _, value := range s {if value == '(' || value == '{' || value == '[' {stk = append(stk, value)} else if (len(stk) == 0) {return false } else {topchar := stk[len(stk) - 1]stk = stk[:len(stk) - 1]if topchar == '(' && value != ')' {return false } else if topchar == '{' && value != '}' {return false } else if topchar == '[' && value != ']' {return false }}}return len(stk) == 0
}

155. 最小栈 - 力扣(LeetCode)
image.png

要在 O ( 1 ) O(1) O(1)的时间找出最小数,一定需要额外的空间保存信息,这里使用一个辅助栈维护额外的信息
根据栈的先进后出性质,push一个数后,如果该数大于最小数,那么之后获取的最小数一定不是该数,所以无需额外记录该大数的信息。向辅助栈push当前最小数(辅助栈的栈顶)
如果该数小于最小数,那么之后获取的最小数就是该数,需要额外记录该数的信息。向辅助栈push该数
pop操作时,同时pop两个栈的栈顶

type MinStack struct {stk []intmin_stk []int 
}func Constructor() MinStack {return MinStack{stk: []int{},min_stk: []int{},}
}func (this *MinStack) Push(val int)  {this.stk = append(this.stk, val) if len(this.min_stk) == 0 {this.min_stk = append(this.min_stk, val)} else if val > this.min_stk[len(this.min_stk) - 1] {this.min_stk = append(this.min_stk, this.min_stk[len(this.min_stk) - 1])} else {this.min_stk = append(this.min_stk, val)}
}func (this *MinStack) Pop()  {this.stk = this.stk[:len(this.stk) - 1]this.min_stk = this.min_stk[:len(this.min_stk) - 1]
}func (this *MinStack) Top() int {return this.stk[len(this.stk) - 1]
}func (this *MinStack) GetMin() int {return this.min_stk[len(this.min_stk) - 1]
}/*** Your MinStack object will be instantiated and called as such:* obj := Constructor();* obj.Push(val);* obj.Pop();* param_3 := obj.Top();* param_4 := obj.GetMin();*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/40145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里巴巴图标库iconfont的使用方式

文章目录 什么是 iconfong创建一个自己的项目如何使用Unicode 使用方法Font class 使用方式Symbol 使用方式还有一种使用方式 在线链接(不推荐,但可用于测试) 什么是 iconfong Iconfont 是一种图标字体服务。它将各种图标设计转换为字体格式…

数据库的约束与索引

数据库的约束与索引 文章目录 数据库的约束与索引一、约束1、定义2、主键索引3、唯一约束4、非空约束5、外键约束 二、索引1、定义2、主键索引3、唯一索引4、普通索引5、全文索引 三、深入索引面试题(一)面试题(二)面试题&#xf…

【设计模式】行为型-状态模式

在变幻的时光中,状态如诗篇般细腻流转。 文章目录 一、可调节的灯光二、状态模式三、状态模式的核心组件四、运用状态模式五、状态模式的应用场景六、小结推荐阅读 一、可调节的灯光 场景假设:我们有一个电灯,它可以被打开和关闭。用户可以…

snap和apt的区别简单了解

Linux中没有tree命令的时候提示安装的时候出现了两个命令,简单看了看两者有何区别(一般用apt就可以了): sudo snap install tree 和 sudo apt install tree 这两个命令都是用来安装 tree 命令行工具的,但它们使用的是不…

在线教育平台,easyexcel使用案例

控制器 因为如何想要在读数据的时候操作数据库,就必须使用构造方法传dao 或者service,因为这个不归spring管理,不能自动注入,所以参数里需要传递service 或者 dao AutowiredIEduSubjectService subjectService;添加课程分类的方法…

Anaconda学习常见问题汇总

问题1:Fatal error in launcher: Unable to create process using ‘“d:\anaconda\isntall\envs\learn1\python.exe 在进行anaconda学习时,在控制台输入:pip list想要查看环境里的内容时发生错误: Fatal error in launcher: Un…

个人博客|PHP源码|支持多国语言切换

一. 前言 今天小编给大家带来了一款可学习,可商用的,支持多国语言的个人博客网站源码,支持二开,无加密。此博客相当简洁,也适合海外。详细界面和功能见下面视频演示。 如果您正好有此需求源码,请联系小编…

软件资产管理系统:提升企业软件资产透明度与合规性的终极解决方案!

在当今数字化转型浪潮中,企业软件资产管理的重要性日益凸显。然而,传统的手工管理方式往往效率低下,难以应对快速变化的软件环境。SmartLic软件资产管理系统应运而生,它以先进的技术手段,为企业提供全面的软件资产管理…

开源自动化热键映射工具autohotkey十大用法及精选脚本

AutoHotkey(AHK)是一款功能强大的热键脚本语言工具,它允许用户通过编写脚本来自动化键盘、鼠标等设备的操作,从而极大地提高工作效率。以下是AutoHotkey的十大经典用法,这些用法不仅解放了用户的双手,还展示…

程序化交易广告及其应用

什么是程序化交易广告? 程序化交易广告是以实时竞价技术即RTB(real-time bidding)为核心的广告交易方式。说到这里,你可能会有疑问:像百度搜索关键词广告还有百度网盟的广告,不也是CPC实时竞价的吗&#x…

MDX的魔法:探索SQL Server中的多维表达式

📊 MDX的魔法:探索SQL Server中的多维表达式 在商业智能和数据分析领域,SQL Server提供了一种强大的工具来处理多维数据集,这就是多维表达式(Multidimensional Expressions,简称MDX)。MDX是一种…

论文学习_UVSCAN: Detecting Third-Party Component Usage Violations in IoT Firmware

论文名称发表时间发表期刊期刊等级研究单位 Understanding the Security Risks Introduced by Third-Party Components in IoT Firmware 2024年IEEE TDSCCCF A佐治亚理工学院 1. 引言 研究背景:物联网(IoT)已经无处不在,为我们…

HQChart报价列表高级应用教程7-走势列数据对接

HQChart报价列表高级应用教程7-走势列数据对接 走势列小程序效果图PC效果图HQChart代码地址走势列类型配置走势列数据格式示例走势列 单独使用一列显示每个股票的走势图 小程序效果图 PC效果图 HQChart代码地址 地址:github.com/jones2000/HQChart 走势列类型 REPORT_COL…

[工业网络] 模型建立

普渡大学ICS参考模型 普渡企业参考架构(PERA)是由西奥多J威廉姆斯(Theodore J. Williams)和普渡大学计算机集成制造工业大学联盟的成员在1990年代开发的企业架构参考模型。该模型被ISA-99(现为ISA/IEC 62443&#xff…

使用EndNote在Word中插入参考文献,并编辑参考文献样式方法

一、背景 在准备中期报告时,学校给的是Word模板,习惯了Latex排版和添加参考文献的便利后,真不想用word写东西。 之前投《机器人》期刊(被拒了)和准备开题的时候也是用word写的,当时为方便添加参考文献和定…

MyBatis 分页插件 PageHelper 简介

引言 PageHelper 是一款优秀的开源免费 MyBatis 分页插件,它极大地简化了分页查询的复杂性,支持多种主流数据库如 MySQL、Oracle、MariaDB、DB2 等。本文将详细介绍 PageHelper 的基本使用、配置参数、实现原理以及实际项目中的应用。 一、PageHelper …

Memcached中的CAS操作:确保数据一致性的原子武器

Memcached中的CAS操作:确保数据一致性的原子武器 在分布式缓存系统中,保持数据的一致性是一个重要而复杂的任务。Memcached作为一种高性能的分布式内存缓存系统,提供了一种称为Compare-And-Swap(CAS)的操作&#xff0…

解决fastjson自动过滤null值

解决fastjson自动过滤null值 使用 SerializerFeature.WriteNullStringAsEmpty 解决 List<HistoryVector> historyVectors new ArrayList<>();HistoryVector historyVector new HistoryVector();historyVector.setInput("1");historyVector.setReason(&q…

不锈钢酸退作业区2#冷线氧化锆分析仪信号传输系统的优化

不锈钢酸退作业区2#冷线氧化锆分析仪信号传输系统的优化 一、项目提出前状况: (一)不锈钢酸退作业区2#冷线退火炉烟气监测系统所使用的设备为横河氧化锆分析仪,此设备主要用于检测退火炉内天然气燃烧后烟气成分中的氧含量值,此设备的检测准确性直接影响产品质量,而且决定…

计算机操作系统部分选填及大题整理

并发和&#xff08; 共享 &#xff09; 是操作系统的两个最基本的特征,&#xff08; 虚拟 &#xff09;和&#xff08; 异步 &#xff09; 是操作系统的重要特征&#xff0c;并发执行的程序失去可再现性现代操作系统的两个基本特征是&#xff08;程序的并发执行&#xff09;和资…