Appearance
22. 括号生成
原题链接:LeetCode 22. 括号生成
题目描述
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 **有效的 **括号组合。
示例 1:
**输入:**n = 3 输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
**输入:**n = 1 输出:["()"]
提示:
- `1 <= n <= 8`
难度: Medium
题解代码
javascript
/**
* @param {number} n
* @return {string[]}
*/
var generateParenthesis = function(n) {
const res = []
backTrack('', 0, 0, n, res)
return res
};
function backTrack (path, left, right, n, res) {
if (path.length === 2 * n) {
res.push(path)
}
//
if (left < n) {
path += '('
backTrack(path, left + 1, right, n, res)
path = path.slice(0, -1)
}
// 这里left > right条件是减枝
if (left > right) {
path += ')'
backTrack(path, left, right + 1, n, res)
path = path.slice(0, -1)
}
}