JAVA练习332- 括号生成 题目概览数字n代表生成括号的对数请你设计一个函数用于能够生成所有可能的并且有效的括号组合。示例 1输入n 3输出[((())),(()()),(())(),()(()),()()()]示例 2输入n 1输出[()]提示1 n 8来源22. 括号生成 - 力扣LeetCode解题分析方法回溯令当前左括号数量为 left右括号数量为 right则left 一定小于 right不然无法组成有效括号left 0 right 0 时返回结果left 0 或 right 0 时才能继续拼括号因此每层递归根据以上条件进行限制然后拼上一个左括号left 减一继续遍历下一层下层遍历完成后回溯拼上的括号和 left拼上右括号right 加一重复操作直到所有层遍历完成。时间复杂度O(4^n / 根号n)空间复杂度O(n)class Solution { public ListString generateParenthesis(int n) { ListString result new ArrayList(); backTracking(n, n, result, new StringBuffer()); return result; } public void backTracking(int left, int right, ListString result, StringBuffer prefix) { if (left 0 right 0) { result.add(prefix.toString()); return; } if (left 0) { prefix.append((); backTracking(left-1, right, result, prefix); prefix.deleteCharAt(prefix.length()-1); } if (left right right 0) { prefix.append()); backTracking(left, right - 1, result, prefix); prefix.deleteCharAt(prefix.length()-1); } } }