leetcode 301. 删除无效的括号 困难
给你一个由若干括号和字母组成的字符串s删除最小数量的无效括号使得输入的字符串有效。返回所有可能的结果。答案可以按任意顺序返回。示例 1输入s ()())()输出[(())(),()()()]示例 2输入s (a)())()输出[(a())(),(a)()()]示例 3输入s )(输出[]提示1 s.length 25s由小写英文字母以及括号(和)组成s中至多含20个括号分析BFS 的核心是按“删除括号的数量”一层一层搜索。把原字符串作为第 0 层。如果它不合法就枚举删除其中一个括号得到第 1 层的所有字符串如果第 1 层仍然没有合法结果就继续删除一个括号得到第 2 层。由于 BFS 是按删除次数递增搜索的所以第一次出现合法字符串时这一层对应的删除次数一定是最少的。此时收集这一层所有合法字符串直接结束搜索不需要继续往下一层。搜索过程中要使用集合进行去重避免同一个字符串被重复加入队列。连续相同的括号也可以跳过重复删除的位置进一步减少搜索量。判断字符串是否合法时从左到右扫描遇到(计数加一遇到)计数减一。如果中途计数小于 0说明出现了无法匹配的右括号最后计数为 0则说明括号完全匹配。因此整体思路就是原字符串 → 删除 1 个括号的所有情况 → 删除 2 个括号的所有情况 → ……第一次找到合法字符串的那一层就是最终答案。class Solution { public: vectorstring removeInvalidParentheses(string s) { vectorstringans; queuestringq;q.push(s); unordered_setstringvisited;visited.insert(s); bool foundfalse; while(!q.empty()) { int sizeq.size(); for(int k0;ksize;k) { string curq.front();q.pop(); if(isValid(cur)) ans.push_back(cur),foundtrue; if(found)continue; for(int i0;icur.size();i) { if(cur[i]!(cur[i]!))continue; if(i0cur[i]cur[i-1])continue; string nextcur.substr(0,i)cur.substr(i1); if(!visited.count(next)) visited.insert(next),q.push(next); } } if(found)break; } return ans; } bool isValid(const string s) { int cnt0; for (int i0;s[i];i) { char cs[i]; if(c()cnt; else if (c )) { cnt--; if(cnt0)return false; } } return cnt0; } };

相关新闻

【共创稿事节】HarmonyOS 7一台采集一台渲染的协同链路设计

【共创稿事节】HarmonyOS 7一台采集一台渲染的协同链路设计

3DGS 重建吃算力,采集吃便携性,这两件事很难在同一台设备上做到最好。手机拿着拍方便,但重建耗时 12-15 秒,用户等得发慌;平板算力大重建快,但举着平板环绕拍摄手感很差。我们想做的链路是手机采集、平板重…

2026/10/10 2:39:27 阅读更多 →
DeepSeek本地部署与集成方案选型对比:从命令行到可视化与办公插件

DeepSeek本地部署与集成方案选型对比:从命令行到可视化与办公插件

DeepSeek本地部署并非只有一种路径。从搜索结果看,社区已经形成了从命令行到可视化界面,再到办公插件集成的多种方案。不同方案在安装复杂度、交互体验和适用场景上差异明显,选型时需要结合自身技术背景和实际需求。 基础层:Ollam…

2026/10/12 15:00:07 阅读更多 →
计算机网络必须掌握的核心知识详解(一)

计算机网络必须掌握的核心知识详解(一)

本人为了复习计网写了这篇文章,主要讲述我认为必须掌握,面试中高频考点,开发中必须熟悉的计网知识,物理层和数据链路层的某些重要一点的知识也会讲解,根据我个人的学习和开发经验.一.计算机网络的体系结构1.网络的概念网络是由若干节点和连接这些节点的链路构成. 多个网络可以…

2026/10/11 3:56:16 阅读更多 →

最新新闻

React Native鸿蒙适配实战:RN页面与鸿蒙提醒服务的系统能力桥接

React Native鸿蒙适配实战:RN页面与鸿蒙提醒服务的系统能力桥接

做鸿蒙适配做到第七个页面,CareTipsScreen算是我这轮项目里最头疼、也最有收获的一个。先说清楚它是什么:这是一款健康管理应用里的“每日护理建议”聚合页,用户每天打开应用,能看到系统按时间段推荐的护理建议,比如下…

2026/10/13 13:15:36 阅读更多 →
驱动工具收费怎么办?显卡驱动修复免费替代方案与卸载清理指南

驱动工具收费怎么办?显卡驱动修复免费替代方案与卸载清理指南

前两年我装完系统,第一件事就是找一款驱动管理工具,跑一遍自动检测,网卡、显卡、声卡一次性装齐,整个过程免费,体验也算顺畅。直到前两天,我打开这款老牌驱动工具的新版本,界面确实变干净了&…

2026/10/13 13:15:36 阅读更多 →
DeepSeek Harness:Agent框架的全插件化设计与可回放日志实践

DeepSeek Harness:Agent框架的全插件化设计与可回放日志实践

这两年做 Agent 工程化,我最大的感受是:光有一个能跑通 demo 的工作流远远不够,真正让人头疼的是框架耦合、排查困难、扩展两难。团队内部折腾了大半年,最终沉淀出一套叫 DeepSeek Harness 的 Agent 运行框架。名字里带 Harness&a…

2026/10/13 13:15:36 阅读更多 →
构建帧率无关的时钟可视化内核:requestAnimationFrame与时间流映射

构建帧率无关的时钟可视化内核:requestAnimationFrame与时间流映射

1. 项目概述:这不是一个普通时钟,而是一次视觉逻辑的重新校准“炫酷的时钟效果”——这五个字在前端开发、数字艺术、交互设计甚至新媒体运营的日常沟通中,出现频率远超表面看起来的那么简单。它从来不是指“把时间显示出来”,而是…

2026/10/13 13:15:36 阅读更多 →
免费搭建本地AI知识库:用Cherry Studio和开源模型实现私有文档智能检索

免费搭建本地AI知识库:用Cherry Studio和开源模型实现私有文档智能检索

最近整理资料时我一直在想一个问题:手头文档越堆越多,光是项目方案、会议纪要、行业报告、个人笔记就占了几个文件夹,想快速找出某个结论时经常得翻半天。后来我尝试把常用的云上AI助手当检索工具,但每次都要上传文档、担心隐私、…

2026/10/13 13:15:36 阅读更多 →
个人主页置顶帖与投稿汇总实操指南:打造内容导航体系

个人主页置顶帖与投稿汇总实操指南:打造内容导航体系

1. 先搞清楚:置顶帖和投稿汇总到底在解决什么问题1.1 置顶帖是主页的第一屏,也是你的数字名片我见过太多创作者陷入同一个困境:内容发了几百条,主页却像一个乱糟糟的仓库,新访客点进来根本不知道你擅长什么、写过哪些代…

2026/10/13 13:14:25 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →