news 2026/6/15 15:30:44

力扣刷题:括号生成

作者头像

张小明

前端开发工程师

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/6/14 19:15:30

如何快速搭建私人音乐服务器:any-listen完整部署指南

如何快速搭建私人音乐服务器&#xff1a;any-listen完整部署指南 【免费下载链接】any-listen A cross-platform private song playback service. 项目地址: https://gitcode.com/gh_mirrors/an/any-listen 厌倦了音乐平台的广告和限制&#xff1f;想要拥有完全属于自己…

作者头像 李华
网站建设 2026/6/15 12:13:16

仿写文章Prompt:OpenWebRX+ SDR接收器技术深度解析

仿写文章Prompt&#xff1a;OpenWebRX SDR接收器技术深度解析 【免费下载链接】openwebrx Open source, multi-user SDR receiver software with a web interface 项目地址: https://gitcode.com/gh_mirrors/open/openwebrx 任务目标 请基于OpenWebRX SDR接收器项目&am…

作者头像 李华
网站建设 2026/6/15 13:09:52

海尔智能家居接入HomeAssistant终极指南:3步实现全屋设备统一控制

海尔智能家居接入HomeAssistant终极指南&#xff1a;3步实现全屋设备统一控制 【免费下载链接】haier 项目地址: https://gitcode.com/gh_mirrors/ha/haier 海尔智能家居接入HomeAssistant插件是一款专为打破品牌壁垒设计的开源集成工具&#xff0c;能够将海尔智家生态…

作者头像 李华
网站建设 2026/6/15 12:14:06

3分钟零门槛获取免费OpenAI密钥:开发者终极指南

3分钟零门槛获取免费OpenAI密钥&#xff1a;开发者终极指南 【免费下载链接】FREE-openai-api-keys collection for free openai keys to use in your projects 项目地址: https://gitcode.com/gh_mirrors/fr/FREE-openai-api-keys 当AI技术浪潮席卷全球&#xff0c;你是…

作者头像 李华
网站建设 2026/6/15 12:13:23

SQL侦探游戏终极指南:用数据库查询解决神秘案件的完整教程

SQL侦探游戏终极指南&#xff1a;用数据库查询解决神秘案件的完整教程 【免费下载链接】sql-mysteries Inspired by veltmans command-line mystery, use SQL to research clues and find out whodunit! 项目地址: https://gitcode.com/gh_mirrors/sq/sql-mysteries 你是…

作者头像 李华
网站建设 2026/6/15 15:15:15

AiPPT智能PPT生成器:5分钟快速制作专业演示文稿

AiPPT智能PPT生成器&#xff1a;5分钟快速制作专业演示文稿 【免费下载链接】AiPPT AI 智能生成 PPT&#xff0c;通过主题/文件/网址等方式生成PPT&#xff0c;支持原生图表、动画、3D特效等复杂PPT的解析和渲染&#xff0c;支持用户自定义模板&#xff0c;支持智能添加动画&am…

作者头像 李华