LeetCode 22. 括号生成(JS里的回溯算法)

发布时间:2026/5/28 2:23:42

LeetCode 22. 括号生成(JS里的回溯算法) 题目简介给定整数n生成所有n 对有效括号的组合。有效括号的核心条件任意时刻右括号数量不能超过左括号最终左右括号数量相等且为 n解题思路标准回溯剪枝。不暴力枚举所有情况只走合法路径左括号数量小于 n可以加左括号右括号数量小于左括号可以加右括号完整 AC 代码vargenerateParenthesisfunction(n){constres[];constbacktrack(str,left,right){// 拼接完成收集结果if(str.length2*n){res.push(str);return;}// 左括号没满优先添加左括号if(leftn){backtrack(str(,left1,right);}// 右括号少于左括号保证合法性if(rightleft){backtrack(str),left,right1);}};backtrack(,0,0);returnres;};代码详解1. 结果数组constres[];存储所有合法括号组合。2. 回溯函数参数str当前拼接的括号字符串left已使用左括号数right已使用右括号数3. 递归终止if(str.length2*n){res.push(str);return;}n 对括号总长度一定是2 * n满足即为有效组合。4. 放左括号if(leftn){backtrack(str(,left1,right);}左括号数量未达最大值可直接放置。5. 放右括号核心剪枝if(rightleft){backtrack(str),left,right1);}最关键逻辑只有右括号数量小于左括号才能放置彻底避免)(、())等非法结构。总结记住两句规则即可秒解左括号没满就加右括号比左少才加

相关新闻