描述
给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。
例如,给出n=3,解集为:
“((()))”, “(()())”, “(())()”, “()()()”, “()(())”
数据范围:0≤n≤10
要求:空间复杂度 O(n),时间复杂度 O(2^n)
示例1
输入:1
返回值:["()"]
示例2
输入:2
返回值:["(())","()()"]
import java.util.*;
public class Solution {
/**
*
* @param n int整型
* @return string字符串ArrayList
*/
public ArrayList<String> generateParenthesis (int n) {
// write code here
ArrayList<String> result = new ArrayList<>();
recursion(0,0,"",result,n);
return result;
}
void recursion(int left,int right ,String arr,ArrayList<String> result,int n){
if(left == n && right == n){
result.add(arr);
return;
}
if(left < n) recursion(left+1,right,arr+"(",result,n);
if(right < n && left>right){
recursion(left,right+1,arr+")",result,n);
}
}
}