LeetCode【0032】最长有效括号

本文目录

  • 1 中文题目
  • 2 求解方法:动态规划
    • 2.1 方法思路
    • 2.2 Python代码
    • 2.3 复杂度分析
  • 3 题目总结

1 中文题目

给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号 子串 的长度。

示例:

输入:s = "(()"
输出:2
解释:最长有效括号子串是 "()"
输入:s = ")()())"
输出:4
解释:最长有效括号子串是 "()()"
输入:s = ""
输出:0

提示:

  • 0 ≤ s . l e n g t h ≤ 3 ∗ 1 0 4 0 \leq s.length \leq 3 * 10^4 0s.length3104
  • s[i] 为 ‘(’ 或 ‘)

2 求解方法:动态规划

2.1 方法思路

方法核心

使用动态规划解决,dp[i]表示以i结尾的最长有效括号长度。需要处理两种匹配情况:直接匹配和间接匹配

实现步骤

(1)初始化:

  • 创建dp数组记录每个位置的最长有效括号长度
  • 特殊情况处理(长度小于2)

(2)状态转移:

  • 遇到’)'时考虑两种情况
  • 更新dp值并维护最大长度

(3)结果统计:

  • 维护全局最大长度
  • 返回最终结果

方法示例

输入:s = "(())"过程演示:
1. 初始化:dp = [0,0,0,0]max_len = 02. i=1: s[1]=')'s[0]='(',形成"()"dp[1] = 2max_len = 23. i=2: s[2]=')'不能形成有效括号dp[2] = 0max_len = 24. i=3: s[3]=')'通过往前看找到匹配的'('dp[3] = 4max_len = 4返回:4

2.2 Python代码

class Solution:def longestValidParentheses(self, s: str) -> int:n = len(s)if n < 2:return 0# 初始化动态规划数组,dp[i]表示以i结尾的最长有效括号长度dp = [0] * n# 记录最长有效括号长度max_len = 0# 从第二个字符开始遍历for i in range(1, n):# 只有当前字符为')'时才可能形成有效括号if s[i] == ')':# 情况1:前一个字符是'(',形如"()"if s[i-1] == '(':# 如果i>=2,需要加上i-2位置的最长有效括号长度dp[i] = dp[i-2] + 2 if i >= 2 else 2# 情况2:前一个字符是')',形如"))"else:# 查看是否能够匹配到更前面的'('# i-dp[i-1]-1是与当前')'匹配的'('的位置if i - dp[i-1] - 1 >= 0 and s[i - dp[i-1] - 1] == '(':# 基础长度:当前匹配的2 + 内部的有效括号长度dp[i-1]temp = 2 + dp[i-1]# 如果还可以再往前看,加上之前的有效括号长度if i - dp[i-1] - 2 >= 0:temp += dp[i - dp[i-1] - 2]dp[i] = temp# 更新最大长度max_len = max(max_len, dp[i])return max_len

2.3 复杂度分析

  • 时间复杂度:O(n)
    • 只需要遍历一次字符串
    • 每个位置的计算是O(1)的
  • 空间复杂度:O(n)
    • 需要一个长度为n的dp数组

3 题目总结

题目难度:困难
数据类型:字符串
应用算法:动态规划

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文看懂ERP、SCM、SRM、WMS、TMS、进销存管理系统

经常有人来私信问我ERP、SCM、SRM、WMS、TMS、进销存管理系统等等&#xff0c;它们听起来都很专业&#xff0c;但到底各自是什么&#xff1f;承担着怎样的角色呢&#xff1f;它们具体都有哪些功能&#xff1f;相互之间又存在怎样的关联&#xff0c;对企业而言又意味着什么呢&am…

c++写一个死锁并且自己解锁

刷算法题&#xff1a; 第一遍&#xff1a;1.看5分钟&#xff0c;没思路看题解 2.通过题解改进自己的解法&#xff0c;并且要写每行的注释以及自己的思路。 3.思考自己做到了题解的哪一步&#xff0c;下次怎么才能做对(总结方法) 4.整理到自己的自媒体平台。 5.再刷重复的类…

机器学习系列----KNN分类

目录 前言 一.KNN算法的基本原理 二.KNN分类的实现 三.总结 前言 在机器学习领域&#xff0c;K近邻算法&#xff08;K-Nearest Neighbors, KNN&#xff09;是一种非常直观且常用的分类算法。它是一种基于实例的学习方法&#xff0c;也被称为懒学习&#xff08;Lazy Learnin…

深度学习——优化算法、激活函数、归一化、正则化

文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;优化算法方法梯度下降 (Gradient Descent, GD)动量法 (Momentum)AdaGrad (Adaptive Gradient Algorithm)RMSProp (Root Mean Square Propagation)Adam (Adaptive Moment Estimation)AdamW 优化算法总结 经验和实践建议…

vue登陆验证

导航守卫&#xff1a;直白的说&#xff0c;导航守卫就是路由跳转过程中的一些钩子函数&#xff0c;这些函数能让你在跳转过程中操作一些其他 的事的时机&#xff0c;这就是导航守卫。 比如最常见的登录权限验证&#xff0c;当用户满足条件时&#xff0c;才让其进入导航&…

YOLOv11实战宠物狗分类

本文采用YOLOv11作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv11以其高效的特征提取能力&#xff0c;在多个图像分类任务中展现出卓越性能。本研究针对5种宠物狗数据集进行训练和优化&#xff0c;该数据集包含丰富的宠物狗图像样本…

星期-时间范围选择器 滑动选择时间 最小粒度 vue3

星期-时间范围选择器 功能介绍属性说明事件说明实现代码使用范例 根据业务需要&#xff0c;实现了一个可选择时间范围的周视图。用户可以通过鼠标拖动来选择时间段&#xff0c;并且可以通过快速选择组件来快速选择特定的时间范围。 如图&#xff1a; 功能介绍 时间范围选择&…

上海ABC行测试面试题回忆版本

11.14号去ABC面试&#xff0c;流程上先做个半个小时的笔试&#xff0c;然后是排队面试。这次做笔试的人很多&#xff0c;有JAVA&#xff0c;大数据&#xff0c;前端&#xff0c;测试&#xff0c;我是最后一批测试。现场没有敢拍照。面试的时候&#xff0c;一共8个面试官&#x…

云岚到家 秒杀抢购

目录 秒杀抢购业务特点 常用技术方案 抢券 抢券界面 进行抢券 我的优惠券列表 活动查询 系统设计 活动查询分析 活动查询界面显示了哪些数据&#xff1f; 面向高并发如何提高活动查询性能&#xff1f; 如何保证缓存一致性&#xff1f; 数据流 Redis数据结构设计 如…

【大数据测试HBase数据库 — 详细教程(含实例与监控调优)】

大数据测试HBase数据库 1. 环境准备与安装1.1 安装 HBase 环境1.1.1 下载与安装 HBase1.1.2 配置 HBase 2. 功能测试2.1 创建表和插入数据2.2 查询数据2.3 更新数据2.4 删除数据2.5 查看表格结构 3. 性能测试3.1 使用 HBase 自带的性能测试工具3.2 使用 YCSB 进行性能测试 4. 容…

JavaWeb常见注解

1.Controller 在 JavaWeb 开发中&#xff0c;Controller是 Spring 框架中的一个注解&#xff0c;主要用于定义控制器类&#xff08;Controller&#xff09;&#xff0c;是 Spring MVC 模式的核心组件之一。它表示该类是一个 Spring MVC 控制器&#xff0c;用来处理 HTTP 请求并…

vue3+elementplus+虚拟树el-tree-v2+多条件筛选过滤filter-method

筛选条件 <el-inputv-model"searchForm.searchTreeValue"input"searchTreeData"style"flex: 1; margin-right: 0.0694rem"placeholder"请输入要搜索的设备"clearable/><imgclass"refresh-img"src"com_refres…

光伏储能微电网协调控制器

安科瑞 Acrel-Tu1990 1. 产品介绍 ACCU-100微电网协调控制器是一款专为微电网、分布式发电和储能系统设计的智能协调控制设备。该装置能够兼容包括光伏系统、风力发电、储能系统以及充电桩等多种设备的接入。它通过全天候的数据采集与分析&#xff0c;实时监控光伏、风能、储…

【C++课程学习】:继承:默认成员函数

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 构造函数 &#x1f369;默认构造函数&#xff08;这里指的是编译器生成的构造函数&#xff09;&#…

React核心概念与特点

React是由Facebook开发并维护的一个用于构建用户界面的开源JavaScript库。它以其独特的组件化架构、高效的性能优化以及灵活的状态管理方式&#xff0c;在前端开发领域占据了重要地位。本文将对React的核心概念、特点以及关键知识点进行全面解析&#xff0c;以帮助读者更好地理…

泷羽sec学习打卡-Linux基础2

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于Linux的那些事儿-Base2 一、Linux-Base2linux有哪些目录呢&#xff1f;不同目录下有哪些具体的文件呢…

TCP拥塞控制

TCP拥塞控制&#xff08;Congestion Control&#xff09; 什么是拥塞控制&#xff1f; 拥塞控制(Congestion Control)主要针对整个网络中的数据传输速率进行调节&#xff0c;防止过多的数据注入网络中&#xff0c;这样可以使网络中的路由器或链路不致于过载&#xff0c;以避免…

自闭症机构解析:去机构是否是最好的选择?

在探讨自闭症儿童的教育与康复问题时&#xff0c;一个常被提及的话题是&#xff1a;将孩子送入专业的自闭症干预机构&#xff0c;是否真的是最好的选择&#xff1f;这个问题&#xff0c;对于每一个自闭症家庭而言&#xff0c;都显得尤为沉重且复杂。星贝育园康复中心&#xff0…

Unity教程(十八)战斗系统 攻击逻辑

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

自动驾驶合集(更新中)

文章目录 车辆模型控制路径规划 车辆模型 车辆模型基础合集 控制 控制合集 路径规划 规划合集