news 2026/3/11 16:48:29

力扣刷题:括号生成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣刷题:括号生成

题目:
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

示例 1:

输入:n = 3
输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]

示例 2:

输入:n = 1
输出:[“()”]

解析:
这道题又是一道典型的回溯算法题,重点在于递归的两个条件:
终止条件:当左右括号都用了 n 个时,得到一个有效组合

选择策略
只要左括号还有剩余,就可以添加左括号
只有当已添加的右括号数量小于左括号数量时,才能添加右括号

具体代码:

/** * 生成所有有效的括号组合 * @param {number} n - 括号的对数 * @return {string[]} - 所有有效的括号组合 */vargenerateParenthesis=function(n){// 1. 初始化结果数组,用于存储所有有效的括号组合letres=[]// 2. 当前正在构建的括号字符串,初始为空lettemp=''// 3. 开始深度优先搜索(DFS),从左右括号数量都为0开始dfs(n,0,0,res,temp)// 4. 返回所有生成的括号组合returnres};/** * 深度优先搜索函数,通过回溯生成所有有效的括号组合 * @param {number} n - 括号的对数 * @param {number} left - 当前已使用的左括号数量 * @param {number} right - 当前已使用的右括号数量 * @param {string[]} res - 存储结果的数组 * @param {string} temp - 当前正在构建的括号字符串 */functiondfs(n,left,right,res,temp){// 5. 终止条件:当左右括号数量都达到n时,说明构建完成if(left===n&&right===n){// 将当前有效的括号组合添加到结果数组中res.push(temp)// 返回,结束当前递归分支return}// 6. 选择1:添加左括号 '('// 条件:左括号数量还没有达到nif(left<n){// 6.1 做出选择:在当前字符串末尾添加左括号temp+='('// 6.2 递归探索:左括号数量加1,继续构建dfs(n,left+1,right,res,temp)// 6.3 撤销选择(回溯):删除刚刚添加的左括号// 注意:slice(0, -1)返回新字符串,所以需要重新赋值temp=temp.slice(0,-1)}// 7. 选择2:添加右括号 ')'// 条件:已使用的右括号数量小于左括号数量// 这个条件是保证括号有效性的关键:在任何位置右括号不能超过左括号if(right<left){// 7.1 做出选择:在当前字符串末尾添加右括号temp+=')'// 7.2 递归探索:右括号数量加1,继续构建dfs(n,left,right+1,res,temp)// 7.3 撤销选择(回溯):删除刚刚添加的右括号temp=temp.slice(0,-1)}// 8. 函数结束,返回到上一层递归// 注意:这里没有显式的返回值,通过修改res数组和temp字符串来传递结果}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/7 19:07:11

Apache Fesod:Java开发者的Excel数据处理革命

Apache Fesod&#xff1a;Java开发者的Excel数据处理革命 【免费下载链接】fastexcel easyexcel作者最新升级版本&#xff0c; 快速、简洁、解决大文件内存溢出的java处理Excel工具 项目地址: https://gitcode.com/gh_mirrors/fast/fastexcel "王工&#xff0c;这个…

作者头像 李华
网站建设 2026/3/10 3:23:39

从零开始掌握pkuseg-python:让中文分词不再困扰你的文本处理

从零开始掌握pkuseg-python&#xff1a;让中文分词不再困扰你的文本处理 【免费下载链接】pkuseg-python pkuseg多领域中文分词工具; The pkuseg toolkit for multi-domain Chinese word segmentation 项目地址: https://gitcode.com/gh_mirrors/pk/pkuseg-python 还在为…

作者头像 李华
网站建设 2026/3/9 2:35:45

终极PxMatrix LED矩阵库:ESP32显示屏完整控制指南

终极PxMatrix LED矩阵库&#xff1a;ESP32显示屏完整控制指南 【免费下载链接】PxMatrix 项目地址: https://gitcode.com/gh_mirrors/px/PxMatrix PxMatrix是一个专为ESP32设计的开源Arduino库&#xff0c;能够高效控制各类LED点阵显示屏&#xff0c;特别是P10等常见型…

作者头像 李华
网站建设 2026/3/9 1:23:56

网页转桌面应用终极指南:快速免费打造专属桌面软件

网页转桌面应用终极指南&#xff1a;快速免费打造专属桌面软件 【免费下载链接】nativefier 项目地址: https://gitcode.com/gh_mirrors/nat/nativefier 你是否厌倦了在浏览器中频繁切换标签页&#xff1f;是否希望将常用的网页应用变成独立的桌面软件&#xff1f;现在…

作者头像 李华