题解 | #括号生成#
括号生成
https://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca
import java.util.*; public class Solution { /** * * @param n int整型 * @return string字符串ArrayList */ /** 思路:使用递归 递归的终止条件就是使用了n个左括号和n个右括号 每次添加阔号有两种情况 要么添加左括号 要么添加右括号 当然 添加右括号存在限制 必须已经加入的 左括号大于右括号 才能加入右括号 否则会出现非法情况 题目特殊 不涉及到某些条件的加持与释放 类似于二叉树的深度优先 */ ArrayList<String> res = new ArrayList<String>(); public ArrayList<String> generateParenthesis (int n) { // write code here recursion(0,0,"",n); return res; } void recursion(int left, int right,String s ,int n){ if(left == n && right == n){ res.add(s); return; } if(left < n){ recursion(left+1,right,s+'(',n); } if(right < n && left > right){ recursion(left,right+1,s+')',n); } } }