Python栈的编程题目

你好,我是悦创。

下面是三道关于栈的编程题目,适合不同难度级别的练习:

1. 有效的括号(简单)

题目描述:

给定一个只包括 '(',')','{','}','[' 和 ']' 的字符串,判断字符串是否有效。有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 注意空字符串可被认为是有效字符串。

示例:

  • 输入: "()",输出: true
  • 输入: "()[]{}",输出: true
  • 输入: "(]",输出: false
  • 输入: "([)]",输出: false
  • 输入: "{[]}",输出: true

提示: 使用栈来处理匹配的括号。

2. 每日温度(中等)

题目描述:

给定一个整数数组 temperatures,表示每天的温度,返回一个数组 answer,其中 answer[i] 是指对于第 i 天,至少还要等多少天才会有更高的温度;如果之后都没有更高的温度,则为 0。

示例:

  • 输入: temperatures = [73, 74, 75, 71, 69, 72, 76, 73]
  • 输出: [1, 1, 4, 2, 1, 1, 0, 0]

提示: 可以利用栈来跟踪那些尚未找到下一个更高温度日的日子。

3. 最小栈(中等)

题目描述:

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

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

示例:

python 复制代码
minStack = MinStack()
minStack.push(-2)
minStack.push(0)
minStack.push(-3)
print(minStack.getMin())   # 返回 -3
minStack.pop()
print(minStack.top())      # 返回 0
print(minStack.getMin())   # 返回 -2

提示: 考虑使用两个栈,一个用来保存所有的元素,另一个用来保存每个元素推入时的最小值。

相关推荐
鶴哥只手遮天几秒前
《OpenFOAM 源码深度剖析》系列-第 7 章 网格与拓扑体系:`polyMesh`、`primitiveMesh` 与 patch
算法·开源
CHEEVEN_QY8 分钟前
热仿真在液冷板设计中的应用价值与局限性客观评估
人工智能·算法
运维@小兵10 分钟前
安装Pycharm并破解
ide·python·pycharm
无忧.芙桃15 分钟前
图的精髓:邻接矩阵与遍历全解析
c++·算法·面试·深度优先·广度优先
冬、不眠的夜16 分钟前
Nuitka 将 python 程序编译成 exe 指南
开发语言·python
Nil20817 分钟前
leetcode 1143最长公共子序列
算法·leetcode·职场和发展
脚踏实地,坚持不懈!20 分钟前
Linux 内存回收机制:水位线、kswapd 与 Direct Reclaim
linux·jvm·算法
_wxd66629 分钟前
二叉搜索树(BST)万字详解:概念、操作、性能分析与 C++ 实现
数据结构·c++·二叉搜索树
Logic10129 分钟前
C语言/数据结构动态规划题解:字符串变回文的最少操作次数——最长回文子序列(LPS)
c语言·数据结构·算法·动态规划·时间复杂度·回文串·最长回文子序列
范中勤32 分钟前
Python Asyncio 协程与 LLM 异步并发原理技术文档(与 Java 对比|彻底澄清所有误区)
python·llm·协程·并发编程·asyncio