题目: | Generate Parentheses |
通过率: | 32.3% |
难度: | 中等 |
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
还是一个递归题目,如果n=3那么意思就是有三个"("和三个")"并且要满足()对称,
递归的时候开始一定是(,然后课看做一个二叉树。左树就是放(,右树是 )根节点是(,
(数量不是0的时候就放(,调用递归,在(的数量小于)的数量的时候就放)继续递归具体看代码:
1 public class Solution { 2 public ArrayList<String> generateParenthesis(int n) { 3 ArrayList<String> res=new ArrayList<String>(); 4 if(n<1)return res; 5 dfs(res,"",n,n); 6 return res; 7 } 8 public void dfs(ArrayList<String> res,String tmp,int m,int n){ 9 if(m==0&&n==0){ 10 res.add(tmp); 11 } 12 else{ 13 if(m!=0) 14 dfs(res,tmp+"(",m-1,n); 15 if(m<n&&n!=0) 16 dfs(res,tmp+")",m,n-1); 17 } 18 } 19 }