news 2026/4/23 17:12:02

力扣刷题:括号生成

作者头像

张小明

前端开发工程师

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/4/23 12:12:17

技术稳定扩展无忧,PHP+MySQL邀请函制作源码系统功能深度列表

温馨提示&#xff1a;文末有资源获取方式系统技术背景&#xff1a;本源码系统基于经典的PHP和MySQL技术栈开发&#xff0c;专为需要高性能、可扩展在线邀请函平台的开发者或企业设计&#xff0c;提供从部署到运营的全套工具&#xff0c;确保在多变市场环境中保持竞争力。源码获…

作者头像 李华
网站建设 2026/4/23 12:16:01

AI动画革命:用Deforum让静态绘画动起来的完整指南

AI动画革命&#xff1a;用Deforum让静态绘画动起来的完整指南 【免费下载链接】sd-webui-deforum Deforum extension for AUTOMATIC1111s Stable Diffusion webui 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-deforum 你是否曾经想过&#xff0c;让那些精美的…

作者头像 李华
网站建设 2026/4/23 14:01:23

Qwen图像编辑终极指南:4步极速修图,新手也能轻松上手

Qwen-Image-Edit-Rapid-AIO是一款基于阿里通义千问图像编辑模型的优化版本&#xff0c;专为追求效率和易用性的用户设计。这个开源项目通过整合优化组件、VAE和CLIP组件&#xff0c;将复杂的AI图像编辑技术简化为4步即可完成的极速操作&#xff0c;让每个人都能在几秒内获得专业…

作者头像 李华
网站建设 2026/4/23 13:59:34

OpenSim终极指南:从零掌握肌肉骨骼模拟的10个核心技术

OpenSim终极指南&#xff1a;从零掌握肌肉骨骼模拟的10个核心技术 【免费下载链接】opensim-core SimTK OpenSim C libraries and command-line applications, and Java/Python wrapping. 项目地址: https://gitcode.com/gh_mirrors/op/opensim-core 你是否曾好奇&#…

作者头像 李华
网站建设 2026/4/23 13:56:49

HarukaBot技术解析:如何实现B站动态与直播的精准QQ推送?

HarukaBot技术解析&#xff1a;如何实现B站动态与直播的精准QQ推送&#xff1f; 【免费下载链接】HarukaBot 将 B 站的动态和直播信息推送至 QQ&#xff0c;基于 NoneBot2 开发 项目地址: https://gitcode.com/gh_mirrors/ha/HarukaBot HarukaBot是一款基于NoneBot2框架…

作者头像 李华
网站建设 2026/4/23 13:57:08

Golang OAuth2集成终极指南:从零到精通完整教程

Golang OAuth2集成终极指南&#xff1a;从零到精通完整教程 【免费下载链接】oauth2 Go OAuth2 项目地址: https://gitcode.com/gh_mirrors/oa/oauth2 想要在Go应用中快速集成第三方登录功能&#xff1f;Golang OAuth2库提供了完整的解决方案&#xff01;本文将带你从基…

作者头像 李华