import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return string字符串一维数组
*/
public String[] generateParenthesis (int n) {
// write code here
List<String> ans = new ArrayList<>();
dfs(0, 0, "", ans, n);
String[] result = new String[ans.size()];
return ans.toArray(result);
}
private void dfs(int l, int r, String t, List<String> ans, int n) {
if (l < r || l > n || r > n) {
return;
}
if (l == n && r == n) {
ans.add(t);
return;
}
dfs(l + 1, r, t + "(", ans, n);
dfs(l, r + 1, t + ")", ans, n);
}
}
编程语言是Java。
该题考察的是回溯算法和深度优先搜索(DFS)的应用。题目要求生成有效的括号组合,输入参数 n 表示括号对数。我们需要找到所有满足条件的括号组合,并将结果以字符串数组的形式返回。
代码的思路如下:
- 在
generateParenthesis方法中,创建一个空的字符串集合ans用于存储结果。 - 调用
dfs方法进行深度优先搜索,传入初始参数0、0、空字符串""、结果集合ans和括号对数n。 - 在
dfs方法中,首先判断左括号数量l是否小于右括号数量r,或者两者超过了括号对数n的限制。若满足任一条件,则直接返回。 - 然后判断左括号数量
l和右括号数量r是否都等于括号对数n。若是,则表示找到了一个符合条件的括号组合,将其添加到结果集合ans中并返回。 - 否则,递归调用
dfs方法,并分别在下一层增加左括号和右括号,同时更新括号字符串t。 - 在
generateParenthesis方法的末尾,将结果集合ans转换为字符串数组并返回。

京公网安备 11010502036488号