力扣20.有效的括号、155.最小栈

20.有效的括号

思路:

重在列举出每一种情况:1. 遇到左括号就将右括号进栈;2. 遇到右括号先判断栈是否为空,为空就说明没有对应的左括号,然后判断栈顶元素是否与当前左括号相等,若不等,则说明无法与对应位置的左括号配对;3. 判断玩前两种情况后,剩下的就是合理的右括号,出栈对应元素。

最后还需要判断栈是否为空,必须要为空左右括号的数量才能对应,返回True,否则返回False。

代码:

python 复制代码
class Solution:
    def isValid(self, s: str) -> bool:
        stack = []

        for i in s:
            if i == '(':
                stack.append(')')
            elif i == '[':
                stack.append(']')
            elif i == '{':
                stack.append('}')
            elif not stack or stack[-1] != i:  # 栈为空或者栈最后的元素与数组不对应
                return False
            else:
                stack.pop()

        return True if not stack else False  # 还要再判断为空,以免忽略只有左括号的情况

155.最小栈

思路:

用一个辅助的最小栈来记录最小值,注意通用栈入栈、出栈时对最小栈也要进行判断,具体看代码。

代码:

python 复制代码
class MinStack:

    def __init__(self):
        self.stack = []
        self.min_stack = []  # 辅助栈,用来记录自栈底到栈顶递减的数

    def push(self, val: int) -> None:
        self.stack.append(val)
        if not self.min_stack or val <= self.min_stack[-1]:  # 额外用栈记录最小值
            self.min_stack.append(val)

    def pop(self) -> None:
        if self.stack.pop() == self.min_stack[-1]:  # 除了通用栈出栈外还要和最小栈比较 
            self.min_stack.pop()

    def top(self) -> int:
        return self.stack[-1]

    def getMin(self) -> int:
        return self.min_stack[-1]
相关推荐
supabc12338 分钟前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
ZhengEnCi1 小时前
AI Agent工具调用防护层怎么写-一份能直接跑的Python四层拦截实现
python·llm·agent
企业数字化笔记1 小时前
视频人体姿态怎么做三维可视化?2D关键点、深度局限与技术选型
人工智能·算法·音视频
ZhengEnCi1 小时前
AI Agent工具误调用怎么解决-从参数校验到高危二次确认的四层工程防线
python·llm·agent
?abc!2 小时前
(数组)581. 最短无序连续子数组
数据结构·算法·leetcode
镜子AI3 小时前
镜子AI工程教程:用Python实现关键词布局检查器与语义改写查重(附完整代码)
人工智能·python·microsoft
小oo呆3 小时前
【学习心得】Python协程
python
信誓旦旦的程序猿4 小时前
【Python量化实战宝典 #22】涨跌停、连板情绪手册:情绪指标构建(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
gCode Teacher 格码致知4 小时前
Pandas教学-21:subplots的使用
python·pandas·1024程序员节
2601_967980114 小时前
Python开发的顶级开源项目全景图:2025-2026年生态概览
python·机器学习·开源项目·数据科学·生态概览