22.括号生成
题目源于题目来源于leetcode
题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

提示:
1 <= n <= 8
解题思路:利用深度优先遍历,采用递归的方法,左括号大于零的时候继续产生左分支;左右括号数都为0时返回。
代码实现
public List<String> generateParenthesis(int n) {
List<String> res=new ArrayList<>();
if(n<=0){
return res;
}
dfs("", n, n, res);
return res;
}
public void dfs(String s,int left,int right,List<String> res){
if(left==0&&right==0){
res.add(s);
return;
}
if(right>left){
return;
}
if(left>0){
dfs(s+")", left-1, right, res);
}
if(right>0){
dfs(s+"(", left, right-1, res);
}
}
执行用时


浙公网安备 33010602011771号