最长有效括号(利用栈处理,动态规划)

本文介绍了LeetCode第32题‘最长有效括号’的两种解法,包括利用栈处理和动态规划法。通过栈处理法,遇到左括号存下标,遇到右括号尝试匹配,动态规划法则涉及dp状态量和状态转移方程。文章提供了详细的代码实现。
摘要由CSDN通过智能技术生成

本题选自力扣32.最长有小括号

本题共有两种解法:1.利用栈处理 2.动态规划法
首先先从容易理解的栈处理法开始,动态规划法如果之前没有接触过可以先浏览这篇博客https://blog.csdn.net/dekulugu/article/details/108572140,从一道简单移动的动态规划算法题开始理解

  1. 利用栈处理
    对于遇到的每个 ’ ( ’ ,我们将它的下标放入栈中.
    对于遇到的每个 ’ ) ',我们先弹出栈顶元素,并且尝试匹配当前这个右括号
    如果栈为空,说明这个右括号没有左括号能进行匹配,我们把他放入栈中,同时他的下标就代表着我们重新开始计算下一段有效括号长度的起始位置
    如果栈不为空,当前右括号的下标减去栈顶元素即为「以该右括号为结尾的最长有效括号的长度」

因为我们存在有以 ’ ) ’ 起手的情况,所以我们先放入一个-1放置出栈时出错。

我们以())((())为例:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值