leetcode generate-parentheses括号回溯
2019-04-05 04:40
43 查看
给定n对括号,编写一个函数来生成格式良好的括号的所有组合。
例如,给定n=3,解集为:
For example, given n = 3, a solution set is:
“((()))”, “(()())”, “(())()”, “()(())”, “()()()”
关键:
每次左括号比右括号多时可以加左括号或者右括号 x>y && x<n
如果左括号等于右括号则只能加左括号 x == y
左括号够了那就只加右括号 x==n&&y<n
可以使用回溯
import java.util.*; public class Solution { ArrayList<String> list = new ArrayList<String>(); int n; public ArrayList<String> generateParenthesis(int n) { if(n==0) { String s = ""; list.add(s); return list; } this.n=n; int x=1,y=0; dfs(x,y,"("); return list; } public void dfs(int x,int y,String s){ if(x==n&&y==n){ list.add(s); return ; } if(x==n&&y<n){ dfs(x,y+1,s+")"); } if(x==y){ dfs(x+1,y,s+"("); } if(x>y&&x<n){ dfs(x+1,y,s+"("); dfs(x,y+1,s+")"); } } }
相关文章推荐
- 【leetcode】括号符匹配问题(Parentheses):Valid Parentheses|Generate Parentheses|LongestValid Parentheses
- Leetcode:Generate Parentheses 生成有效括号对
- [LeetCode]-Generate Parentheses N个括号所有的组合数
- LeetCode 22. Generate Parentheses 生成括号 Python 回溯解法
- LeetCode 22:Generate Parentheses的递归,回溯两种解法
- @LeetCode括号生成--Generate Parentheses[C++]
- Leetcode Generate Parentheses
- leetcode第21题--Generate Parentheses
- LeetCode Generate Parentheses
- LeetCode Generate Parentheses
- leetcode--Generate Parentheses
- Generate Parentheses--LeetCode
- leetcode Generate Parentheses
- Leetcode Generate Parentheses
- 回溯之Leetcode22 Generate Parentheses
- LeetCode Generate Parentheses 深度分析理解
- 开始刷leetcode day20:Generate Parentheses
- leetcode:Generate Parentheses
- 【LeetCode-面试算法经典-Java实现】【022-Generate Parentheses(生成括号)】
- Leetcode 22 Generate Parentheses