递归嘛
只有左括号比右括号数目多的时候才这一位才能是 () 否则只能是 (
注意也要保持 左右的数量都大于0 才可以添加
当到最后的时候左右都用完 res添加
import java.util.*;
public class Solution {
/**
*
* @param n int整型
* @return string字符串ArrayList
*/
public ArrayList<String> generateParenthesis (int n) {
ArrayList<String> result = new ArrayList<>();
backtrack("",n,n,result);
return result;
}
private void backtrack(String string, int left, int right, List<String> result) {
if(left == 0 && right ==0){
result.add(string);
return;
}
if(left == right){
backtrack(string+'(',--left,right,result);
}
else{
if(left >=1) backtrack(string+'(',left-1,right,result);
if(right >=1) backtrack(string+')',left,right-1,result);
}
}
}


京公网安备 11010502036488号