题目 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。题目链接
我的JavaScript解法
/**
* @param {number} n
* @return {string[]}
*/
var generateParenthesis = function(n) {
let result = [];
dfs(result, "", 0, 0, n);
return result;
};
var dfs = (result, current, left, right, n) => {
if (current.length == 2 * n) {
result.push(current);
return;
}
if (left < n) {
dfs(result, current + '(', left+1, right, n);
}
if (right < left) {
dfs(result, current + ')', left, right+1, n);
}
}
解析: 深度优先搜索,n对括号,代表有n个(和n个)参考解析回溯算法(深度优先遍历)+ 广度优先遍历
复杂度分析:
- 时间复杂度:
- 空间复杂度:(有待研究)