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

JAVA练习275-乘积最大子数组

题目概览

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

左右括号匹配,即每个左括号都有对应的右括号将其闭合的字符串是格式正确的,比如"(()())"

示例 1:

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

示例 2:

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

示例 3:

输入:s = ""输出:0

提示:

  • 0 <= s.length <= 3 * 104
  • s[i]'('')'

来源:32. 最长有效括号 - 力扣(LeetCode)

解题分析

方法:动态规划

用 dp 存储结果,分情况而论:
1. 当 s[ i ] 为 ' ( ' 且 s[ i - 1 ] 为')' 时,dp[i]至少为2,需要看 i - 2 是否连上了即看 dp[i - 2],可得 dp[i] = dp[i-2] + 2;
2. 当 s[ i ] 为 ' ) ' 且 s[ i - 1 ] 为')' 时,dp[i]得看前面差 dp[i-1] 长度是否有 '(',即当 i - dp[i - 1] - 1 >= 0 且 s[i - dp[i - 1] - 1] == '(' 时,dp[i] = dp[i-1] + dp[i-dp[i-1]-2] + 2 (加上 dp[i-dp[i-1]-2] 是因为有连着的情况)

时间复杂度: O(n)
空间复杂度: O(n)

class Solution { public int longestValidParentheses(String s) { char[] cs = s.toCharArray(); if (cs.length <= 1) { return 0; } int[] dp = new int[cs.length + 1]; int longest = 0; for (int i = 1; i < cs.length; ++i) { if (cs[i] == ')' && cs[i - 1] == '(') { dp[i] = (i >= 2 ? dp[i - 2] : 0) + 2; } else if (cs[i] == ')' && cs[i - 1] == ')' && i - dp[i - 1] > 0 && cs[i - dp[i - 1] - 1] == '(') { dp[i] = dp[i - 1] + ((i - dp[i - 1]) > 2 ? dp[i - dp[i - 1] - 2]: 0) + 2; } longest = Math.max(longest, dp[i]); } return longest; } }
http://www.jsqmd.com/news/1144816/

相关文章:

  • GPT5.5 负载均衡高可用中转搭建
  • 影刀RPA ELK日志分析自动化:异常日志采集与告警
  • 当 AI 开始替你行动, 手机也该被重新定义
  • Qt——银行家算法的分
  • 2026 年最新主流前端技术全景(框架 / 构建 / AI / 跨端 / 底层 / 工程化)
  • 分布式锁的实现方式对比
  • caret 包 RFE 实战:3种模型(线性回归/随机森林/SVM)特征选择性能对比
  • Agent 时代最重要的数据,不是答案,而是 Trajectory
  • 怎么让 Agent Skills 自进化?Agent 回答质量翻倍
  • Codex 实战:别先堆框架,先看边界
  • 从“浅层”到“深层”:LangChain Deep Agents 实战指南
  • Context Engineering 2026: 从提示到信息架构的跃迁
  • PostgreSQL全文检索与倒排索引
  • 大数据时代,Python爬虫工具凭啥成数据获取神器?
  • RAG 优化技术:元数据过滤
  • 编程的通用逻辑:学任何语言前先看懂这套骨架
  • 全面解析Docker容器网络模型配置与故障排查技巧
  • 爬虫转大模型:学习路线先压住哪几个坑
  • 数据通道:RTCDataChannel 可靠与不可靠传输
  • 网络安全小白入行手册:术语、岗位、学习路线一篇说透
  • 工业领域中提供优质服务的震散机公司推荐
  • C# 源生成器使用方法
  • Claude Code 的 Prompt 工程:从静态分离到缓存优化的深度解析
  • STM32与WSEN-ISDS六轴传感器运动追踪开发指南
  • Kubernetes调度机制
  • 量化交易必看:5大类经典策略全解析,从趋势跟踪到统计套利
  • 【OpenHarmony/HarmonyOs 】化学学习软件成就系统设计实践:让学习 App 更有持续使用动力
  • PyTorch DDP 多机多卡配置:2节点8卡集群部署与通信瓶颈分析
  • LIDA v0.1.0 实战:5步调用GPT-4 API,自动生成3种Matplotlib图表
  • RAG - 检索增强生成是什么