还是backtrack
一开始一对一对的加括号结果出错了,因为一对括号只能包第一个。还是两个括号分开加。用left和right表示左右括号的数量。
public class Solution {
public List<String> generateParenthesis(int n) {
List<String> res= new ArrayList<String>();
helper(res, "", 0, 0, n);
return res;
}
private void helper (List<String> res, String par, int left, int right, int k) {
if (2 * k <= left + right) {
res.add(par);
return;
}
if (left < k) {
helper(res, par + "(", left + 1, right, k);
}
if (right < left) {
helper(res, par + ")", left, right + 1, k);
}
}
}
本文介绍了一种使用递归回溯法生成所有有效括号组合的方法。通过控制左右括号的数量来确保生成的有效性,最终得到所有可能的组合。
1549

被折叠的 条评论
为什么被折叠?



