22. 括号生成 - LeetCode
22. 括号生成
dfs+剪枝
class Solution {
public List<String> generateParenthesis(int n) {
List<String> ans = new ArrayList<>();
generateParenthesis(ans, n, "", 0, 0);
return ans;
}
private void generateParenthesis(List<String> ans, int n, String s, int left, int pair){
if(pair == n){
ans.add(s);
return;
}
if(left + pair < n) generateParenthesis(ans, n, s+"(", left+1, pair);
if(left > 0) generateParenthesis(ans, n, s+")", left-1, pair+1);
}
}
- dfs的过程中,已经放的左括号小于n则可以放左括号,没有匹配的左括号大于0则可以放右括号

浙公网安备 33010602011771号