题目:
括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。
说明:解集不能包含重复的子集。
例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
思路:使用dfs深度优先算法 递归遍历
由于括号是由左括号开始 当右括号大于左括号时 结束此次遍历
当left == right的时候 保留当前结果
代码如下(java):
public void dfs(String curString,List<String> result,int left,int right) {
if( left > right ) {
return;
}
if( left == right && curString != "" ) {
result.add(curString);
}
if( left > 0 ) {
dfs( curString+"(", result, left-1, right);
}
if( right > 0 ) {
dfs( curString+")", result, left, right-1);
}
}
Leetcode 面试题08.09 括号
最新推荐文章于 2020-11-27 16:05:29 发布