LeetCode 22 题解
AC 通过
public class LeetCode22 {
// 2^2n 局部不合法,不再递归
public List<String> generateParenthesis(int n) {
List<String> result = new ArrayList<String>();
// 递归
gen(0,0,n,"",result);
for(int i = 0; i < result.size();i++){
System.out.println(result.get(i));
}
return result;
}
/**
* @param i
* @param j
* @param n
* @param result
*/
private void gen(int left, int right, int n, String str,List<String> result) {
// 递归的边界 left < right 左括号的个数 必须大于等于右括号个数
if(left > n || right > n || left < right) return ;
if(left == n && right == n){
result.add(str);
return ;
}
gen(left + 1, right, n, str + "(", result);
gen(left, right + 1, n, str + ")", result);
}
/**
* @param args
*/
public static void main(String[] args) {
new LeetCode22().generateParenthesis(3);
}
}