22.括号生成-回溯解法
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:1 <= n <= 8
来源:力扣(LeetCode)
抽象为树形结构,树的DFS(不太熟练,所以没有思路)
剪枝策略 判断条件:open>n 、close 为第一个 、close>open


/** * @param {number} n * @return {string[]} */ var generateParenthesis = function(n) { const res = []; if(n <= 0) return res; const dfs = (path,open,close) =>{ if(open > n || close > open) return if(path.length == 2*n){ res.push(path) return } dfs(path + "(",open +1,close) dfs(path + ")",open,close+1) } dfs("",0,0); return res; };

浙公网安备 33010602011771号