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

LeetCode 热题 HOT 100 (015/100)【宇宙最简单版】

【栈】No. 0155 最小栈【中等】👉力扣对应题目指路

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
欢迎关注、订阅专栏 【力扣详解】谢谢你的支持!

题目描述

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

  • 实现 MinStack 类:

    • MinStack()
      • 初始化堆栈对象
    • void push(int val)
      • 将元素val推入堆栈
    • void pop()
      • 删除堆栈顶部的元素
    • int top()
      • 获取堆栈顶部的元素
    • int getMin() 【 👉 唯一与普通栈不同的点】
      • 获取堆栈中的最小元素

🔥 思路:用空间换时间,设计辅助栈来存储栈内每个元素为栈顶元素时对应的栈的最小元素 👉 如下图所示

  • 基于这样的设计, int getMin() 获取堆栈中的最小元素时,仅需要返回辅助栈的栈顶元素即可
  • 注意:对于普通栈,如果要检索到最小元素,复杂度为 O(n),不符合时间复杂度 ⏳ 要求

参考如上思路,给出构建辅助栈 min_stack 的详细步骤如下:

  • 回顾:辅助栈是用来存储栈内每个元素为栈顶元素时对应的 ”栈的最小元素“ 的
  • 新入栈元素 val 对应的 “栈的最小元素” 应该为 a. 旧栈顶元素对应的 “栈的最小元素” 和 b. 新元素 val 的最小值
    • a. 旧栈顶元素对应的 “栈的最小元素” 对应 self.min_stack[-1],所以需要新入栈 min_stack 的值应为 min(val, self.min_stack[-1])
    • 对应部分在下方代码中用 “## 核心代码行” 标识
class MinStack:def __init__(self):self.stack = [None]self.min_stack = [math.inf]  ## 可以发现,辅助栈是向栈顶方向递减的def push(self, val: int) -> None:self.stack.append(val)self.min_stack.append(min(val, self.min_stack[-1]))  ## 核心代码行def pop(self) -> None:self.stack.pop()self.min_stack.pop()def top(self) -> int:return self.stack[-1]def getMin(self) -> int:return self.min_stack[-1]

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
🔥 LeetCode 热题 HOT 100

http://www.lryc.cn/news/416624.html

相关文章:

  • 【HarmonyOS】鸿蒙应用实现截屏
  • Conda包依赖侦探:conda inspect命令全解析
  • 数模——灰色关联分析算法
  • Python爬虫技术 第27节 API和RESTful服务
  • 音视频入门基础:WAV专题(4)——FFmpeg源码中获取WAV文件音频压缩编码格式、采样频率、声道数量、采样位数、码率的实现
  • 环境变量在Conda中的魔法:控制包安装的秘诀
  • VS Code C/C++ MSVC编译器
  • 【技巧】IDEA 个性化配置
  • `pytest` 中一些常用的选项
  • fme从json中提取位置到kml中
  • 在Ubuntu 18.04上安装和配置pgAdmin 4服务器模式的方法
  • NiFi :1 初识这把“十年一剑”的利器
  • Pyside6实战教程专栏目录
  • 【Dash】使用 Dash Design Kit (DDK) 创建图表
  • C++ 几何算法 - 向量点乘,叉乘及其应用
  • Taro学习记录(具体项目实践)
  • ICML 2024 | 矛与盾的较量!北大提出提示无关数据防御保护算法PID
  • Oracle聚合函数LISTAGG和WM_CONCAT简介
  • 【Unity】多种寻路算法实现 —— BFS,DFS,Dijkstra,A*
  • 十大游戏设计软件:创意实现的利器
  • Pandas高级操作:多级索引、窗口函数、数据透视表等
  • mysql源码编译启动debug
  • 吴恩达机器学习-C1W3L2-逻辑回归之S型函数
  • P-one新增火焰图-为性能测试开启新视野
  • CTF-web基础 TCP/UDP协议
  • sql常用语法总结
  • 实验八 题目描述 从键盘上输入任意一个整数(正负数皆可),判断该整数的绝对值是否为回文数。
  • IsaacLab | Workflow 中 rsl_rl 的 play.py 脚本精读
  • PYTHON专题-(8)我错了该怎么整?
  • 【自然资源】设施农业用地的学习梳理