当前位置: 首页 > news >正文

每日两题 / 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();*/

相关文章:

  • 实验五 数据库完整性约束的实现与验证
  • linux守护进程生命周期管理-supervisord
  • ABAP开发:动态Open SQL编程案例介绍
  • elasticsearch 8.14.1 和 Spring Data elasticsearch 实例演示
  • React 中 useState 和 useReducer 的联系和区别
  • spring security + vue,登录功能
  • 2024鲲鹏昇腾创新大赛集训营Ascend C算子学习笔记
  • docker k8s
  • CentOS 7 内存占用过大导致 OOM Killer 杀掉了 Java 进程
  • AI是在帮助开发者还是取代他们?
  • 2024.06.30 刷题日记
  • 解决 VM 虚拟机网络连接异常导致的 Finalshell 无法连接及 ifconfig 中 ens33 丢失问题
  • 基于C++实现的EventLoop与事件驱动编程
  • 【Hive中常见的优化手段----数据采集!Join 优化!Hive索引!数据倾斜!mapreduce本地模式!map和reduce数量调整!】
  • 【大模型LLM面试合集】大语言模型基础_llm概念
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Android 架构优化~MVP 架构改造
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • java2019面试题北京
  • node和express搭建代理服务器(源码)
  • Twitter赢在开放,三年创造奇迹
  • 百度小程序遇到的问题
  • 从setTimeout-setInterval看JS线程
  • 回顾2016
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 记一次和乔布斯合作最难忘的经历
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 新手搭建网站的主要流程
  • 原生 js 实现移动端 Touch 滑动反弹
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 在weex里面使用chart图表
  • ionic异常记录
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 阿里云服务器购买完整流程
  • 函数计算新功能-----支持C#函数
  • #git 撤消对文件的更改
  • $L^p$ 调和函数恒为零
  • (1)(1.13) SiK无线电高级配置(五)
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (五)c52学习之旅-静态数码管
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 物件導向與老子思想 (OO)
  • (转)LINQ之路
  • . NET自动找可写目录
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET程序员迈向卓越的必由之路
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @RestControllerAdvice异常统一处理类失效原因