数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例:
输入:n = 3 输出:[ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ]
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/generate-parentheses 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的解:(可以把这个看成一个框架,先判断再添加)
class Solution {public List<String> generateParenthesis(int n) {List<String> list = new ArrayList<>();char[] cs = new char[n * 2];generate(0, 0, n * 2, cs, list);return list;}public static void generate(int leftN, int rightN, int N, char[] cs, List<String> list) {if (rightN + leftN == N) list.add(new String(cs));if (leftN < N / 2){cs[leftN + rightN] = '(';generate(leftN + 1, rightN, N, cs, list);}if (rightN < N / 2 && rightN < leftN) {cs[leftN + rightN] = ')';generate(leftN, rightN + 1, N, cs, list);}}}
