文心    LeetCode 22. 括号生成 Golang实现 LeetCode 22. 括号生成 — Golang 实现问题描述给定n对括号生成所有由n对括号组成的有效格式正确的括号组合。输入: n 3输出: [“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]解题思路回溯法核心规则• 任意时刻左括号数left≥ 右括号数right保证合法性• 左括号总数 ≤n• 右括号总数 ≤n“” / \ “(” 无效(leftright) / \ “((” “()” / \ / “(((” “(()” “()(” “())” ← “())” 非法leftright…代码实现方法一回溯推荐【go】package mainimport “fmt”func generateParenthesis(n int) []string {var result []stringbacktrack(result, “”, 0, 0, n)return result}// backtrack 回溯函数// left: 已使用的左括号数// right: 已使用的右括号数func backtrack(result[]string, current string, left, right, n int) {// 终止条件当前字符串长度达到 2nif len(current) 2*n {*result append(*result, current)return}// 尝试添加左括号if left n {backtrack(result, current“(”, left1, right, n)}// 尝试添加右括号必须 left right 才合法if right left {backtrack(result, current“)”, left, right1, n)}}func main() {fmt.Println(generateParenthesis(3))// 输出: [((())) (()()) (())() ()(()) ()()()]}方法二迭代方式BFS 队列【go】func generateParenthesis2(n int) []string {if n 0 {return []string{“”}}var result []string// 队列元素: [当前字符串, 左括号数, 右括号数]queue : [][3]interface{}{{“”, 0, 0}}for len(queue) 0 {cur : queue[0]queue queue[1:]s : cur[0].(string)left : cur[1].(int)right : cur[2].(int)if left n right n {result append(result, s)continue}if left n {queue append(queue, [3]interface{}{s “(”, left 1, right})}if right left {queue append(queue, [3]interface{}{s “)”, left, right 1})}}return result}复杂度分析【表格】指标 值时间复杂度 O(4ⁿ/√n)即第 n 个卡特兰数空间复杂度 O(4ⁿ/√n)结果存储 O(n)递归栈深关键点总结剪枝条件right left → 才能放右括号2. 终止条件left n right n → 字符串长度为 2*n3. 字符串拼接Go 中使用 拼接每次产生新字符串

相关新闻

最新新闻

iOS秋招笔试复盘:从内存管理到上架的硬核考点

iOS秋招笔试复盘:从内存管理到上架的硬核考点

2023年年底那阵子,我带团队把秋招iOS研发岗的试卷出完、批完,正好是第二批笔试。比起第一批,这一批的备选池子更杂,有科班出身的,也有培训转行、做了两三个仿写项目就来投的。试卷批完我最大的感受是:真正拉…

2026/9/1 17:07:14
claude-scholar:用Claude Code构建AI学术研究全流程工作流

claude-scholar:用Claude Code构建AI学术研究全流程工作流

最近这半年,“AI 写论文”已经从段子变成了不少研究者的真实工作流。但每次有人晒出用大模型写论文的截图,评论区都必然分成两派:一派觉得这是效率革命,另一派直接扣上“学术不端”的帽子。这两派其实都没有回答最关键的问题&…

2026/9/1 17:07:14
建筑物损伤分割 YOLOv8对建筑物损伤分割 检测数据集进行处理训练

建筑物损伤分割 YOLOv8对建筑物损伤分割 检测数据集进行处理训练

如何使用Segmentation Models库对建筑物损伤分割与检测数据集进行处理_并使用YOLOv8对建筑物损伤分割与检测数据集进行处理训练 以下文字及代码仅供参考。 文章目录如何使用Segmentation Models库对建筑物损伤分割与检测数据集进行处理_并使用YOLOv8对建筑物损伤分割与检测数据…

2026/9/1 17:07:14
NFC技术原理与汽车钥匙应用:从硬件到协议完全解读

NFC技术原理与汽车钥匙应用:从硬件到协议完全解读

CC-BY-SA-4.0 | © 2026 KY (kyshipit) 第1章 申明 本文讲解NFC技术原理、汽车NFC钥匙系统通用硬件架构及诊断通信协议,内容均基于公开标准(ISO 14229、ISO 15765-2、NFC Forum规范)和通用工程常识。文中不涉及任何特定车型、厂商或非公…

2026/9/1 17:07:14
聊聊后端技术栈的“够用”与“长远”:哪些值得投入

聊聊后端技术栈的“够用”与“长远”:哪些值得投入

一句话能噎死很多架构师:“你学的这个,到底有用吗?”后端技术栈的更新速度快得像一场永不停歇的流星雨,今天还挂在热榜上的框架,明天就可能被GitHub上的新秀按在地上摩擦。大多数人的处境并非跟不上时代,而…

2026/9/1 17:07:14
STM32驱动LIS3DH三轴加速度计:从寄存器配置到工程实践

STM32驱动LIS3DH三轴加速度计:从寄存器配置到工程实践

简介:面向STM32开发者的三轴加速度计驱动源码包,目标是解决嵌入式项目中LIS3DH传感器快速接入和实时数据读取难题,适合具备基础单片机经验、正在做I2C或SPI接口传感器移植的工程师与高年级学生。源码基于HAL库和标准CMSIS编写,核心…

2026/9/1 17:02:13