题目点击这里 ➡️「括号生成」
思路:
深度便利 + 满足筛选条件;
当满足左括号数量 == 右括号数量 == 0时,将获得结果,将结果存入数组列表中。(整个过程中需要满足左括号数量 >= 右括号数量)
class Solution {
List<String> res = new ArrayList<>();
public List<String> generateParenthesis(int n) {
dfs("", n, n);
return res;
}
public void dfs(String s, int left, int right) {
// 所有括号都用掉,可以输出结果
if (left == 0 && right == 0) {
res.add(s);
return;
}
// 还有做括号剩余
if (left > 0) {
dfs(s + "(", left - 1, right);
}
// 左括号剩余小于右括号 eg: '(()',接下来可以补充右括号
if (left < right) {
dfs(s + ")", left, right - 1);
}
}
}