[leetcode]Generate Parentheses
2014-05-27 15:40
399 查看
Generate Parentheses
题意:生成所有括号个数是n的,合法的括号排列。
解法:dfs生成括号。当生成数目=2*n时,判断左右括号数目是否相等,相等则合理,否则不合理。中间加一些剪枝,当左括号数=右括号数时,只添加做括号,当左括号数目>n时,直接剪枝掉。
import java.util.ArrayList;
public class Solution131 {
ArrayList<String>ans;
intn;
public ArrayList<String> generateParenthesis(int n) {
this.n=n;
ans=new ArrayList<String>();
if (n==0){
return ans;
}
if (n==1){
ans.add("()");
return ans;
}
dfs(1,"",0,0);
return ans;
}
privatevoid dfs(int x, String string, int left, int right) {
if(x==2*n+1){
if(left==right){
ans.add(string);
}
return;
}
if(left>n){
return;
}
if(left==right){
dfs(x+1,string+"(",left+1,right);
}else{
dfs(x+1,string+"(",left+1,right);
dfs(x+1,string+")",left,right+1);
}
}
}
题意:生成所有括号个数是n的,合法的括号排列。
解法:dfs生成括号。当生成数目=2*n时,判断左右括号数目是否相等,相等则合理,否则不合理。中间加一些剪枝,当左括号数=右括号数时,只添加做括号,当左括号数目>n时,直接剪枝掉。
import java.util.ArrayList;
public class Solution131 {
ArrayList<String>ans;
intn;
public ArrayList<String> generateParenthesis(int n) {
this.n=n;
ans=new ArrayList<String>();
if (n==0){
return ans;
}
if (n==1){
ans.add("()");
return ans;
}
dfs(1,"",0,0);
return ans;
}
privatevoid dfs(int x, String string, int left, int right) {
if(x==2*n+1){
if(left==right){
ans.add(string);
}
return;
}
if(left>n){
return;
}
if(left==right){
dfs(x+1,string+"(",left+1,right);
}else{
dfs(x+1,string+"(",left+1,right);
dfs(x+1,string+")",left,right+1);
}
}
}
相关文章推荐
- 【Leetcode】【python】Generate Parentheses
- LeetCode 22 Generate Parentheses
- [leetcode]Generate Parentheses
- [leetcode]Generate Parentheses @ Python
- [leetcode 22]generate parentheses
- 【leetcode】Generate Parentheses
- LeetCode 22 — Generate Parentheses(C++ Java Python)
- Leetcode-Generate Parentheses
- leetCode力扣之Generate Parentheses
- leetcode-Generate Parentheses (2014.4.18)
- [Leetcode] 22- Generate Parentheses
- leetcode (22) - Generate Parentheses
- 【leetcode】Generate Parentheses
- LeetCode——Generate Parentheses
- LeetCode | Generate Parentheses
- [LeetCode] Valid Parentheses、Generate Parentheses、Longest Valid Parentheses
- Generate Parentheses -- leetcode
- LeetCode-Generate Parentheses & Letter Combinations of a Phone Number
- LeetCode 22 Generate Parentheses
- Generate Parentheses——LeetCode