收录网站源码网络广告推广方法
22. 括号生成 - 力扣(LeetCode)
递归一次加入括号即可,需要定义两个变量用来记录左括号与右括号的数量,如果左括号的值小于最大值,则加入左括号,进行递归,如果右括号小于左括号,则加入进行递归
class Solution {List<String> list;int n;StringBuilder sb;public List<String> generateParenthesis(int n) {this.n = n;list = new ArrayList<>();sb = new StringBuilder();dfs(0, 0);return list;}public void dfs(int count1, int count2) {if (sb.length() == n * 2 && count1 == n && count2 == n && !list.contains(sb.toString())) {list.add(sb.toString());return;}if (count1 < n) {sb.append('(');dfs(count1 + 1, count2);sb.deleteCharAt(sb.length() - 1);}if (count2 < count1) {sb.append(')');dfs(count1, count2 + 1);sb.deleteCharAt(sb.length() - 1);}}}