news 2025/12/31 11:05:16

力扣刷题:括号生成

作者头像

张小明

前端开发工程师

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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/26 10:51:22

抖音智能助手安全使用全攻略:从技术原理到风险规避

抖音智能助手安全使用全攻略&#xff1a;从技术原理到风险规避 【免费下载链接】Douyin-Bot &#x1f60d; Python 抖音机器人&#xff0c;论如何在抖音上找到漂亮小姐姐&#xff1f; 项目地址: https://gitcode.com/gh_mirrors/do/Douyin-Bot 在短视频平台日益严格的自…

作者头像 李华
网站建设 2025/12/28 21:48:50

海量模板轻松制作,邀请函源码系统功能全列表与用户体验亮点

温馨提示&#xff1a;文末有资源获取方式系统简介&#xff1a;这是一个专注于庆典邀请函制作的在线工具源码&#xff0c;旨在为用户提供简单、高效的创作体验&#xff0c;通过预置模板和易用功能&#xff0c;让任何人都能快速生成专业级邀请材料&#xff0c;适用于个人用户和企…

作者头像 李华
网站建设 2025/12/26 10:50:52

海尔智能家居接入HomeAssistant完整指南:5步实现全屋设备统一控制

海尔智能家居接入HomeAssistant完整指南&#xff1a;5步实现全屋设备统一控制 【免费下载链接】haier 项目地址: https://gitcode.com/gh_mirrors/ha/haier 你是否希望将家中的海尔智能设备无缝集成到HomeAssistant平台中&#xff0c;实现跨品牌设备的统一管理和自动化…

作者头像 李华
网站建设 2025/12/29 16:08:40

浏览器LaTeX绘图新方案:TikZJax免安装快速上手指南

浏览器LaTeX绘图新方案&#xff1a;TikZJax免安装快速上手指南 【免费下载链接】tikzjax TikZJax is TikZ running under WebAssembly in the browser 项目地址: https://gitcode.com/gh_mirrors/ti/tikzjax 在当今数字化教学和科研环境中&#xff0c;浏览器LaTeX绘图工…

作者头像 李华
网站建设 2025/12/29 20:12:10

TwitchLeecher快速下载指南:简单保存直播录像的实用方法

TwitchLeecher快速下载指南&#xff1a;简单保存直播录像的实用方法 【免费下载链接】TwitchLeecher Twitch Leecher - The Broadcast Downloader 项目地址: https://gitcode.com/gh_mirrors/tw/TwitchLeecher 想要永久收藏那些精彩的Twitch直播内容吗&#xff1f;Twitc…

作者头像 李华