Generate Parentheses LeetCode解题报告
2017-08-18 10:07
197 查看
题目
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
思路
这种要你穷尽所有可能性的题,一般就会想到递归,在草稿纸上画一下找出其中的规律就好办了,直接看下图:可以得出规律:
1、开头不是能“)”
2、左括号个数大于右括号个数时,接下来的括号随意。
3、当左右括号数目相等时,接下来的必须要是左括号。
4、又括号的个数不能大于左括号个数,当左右括号都用完时,返回。
代码
这里left和right的意思分别表示还剩下的左括号个数和右括号个数。public List<String> generateParenthesis(int n) { List<String> list = new ArrayList<String>(); generateParentheses(n,n,"",list); return list; } public void generateParentheses(int left,int right,String curStr,List<String> list){ //左右括号用完了,返回 if(left == 0 && right == 0){ list.add(curStr); return; } //只要还有左括号,就能使用 if(left > 0){ generateParentheses(left-1,right,curStr+"(",list); } //还有右括号且剩下的右括号必须多余剩下的左括号 if(right > 0 && left < right){ generateParentheses(left,right-1,curStr+")",list); } }
相关文章推荐
- “两高”报告表决结果引现场惊叹 最高法人员摇头
- 洛谷OJ P1141 01迷宫 解题报告
- 20155316 实验二《Java面向对象程序设计》实验报告
- 麦肯锡报告:到2030年,自动化和人工智能的发展将对就业产生怎样的影响?
- cojs 简单的区间问题 解题报告
- [下载]ERP项目可行性研究报告
- POJ1631解题报告
- 杭电 1418 抱歉 题解报告
- 唱吧APP产品体验报告
- [Leetcode] 104. Maximum Depth of Binary Tree 解题报告
- Swiper移动端的实际应用--业绩报告--高度适配
- Oracle AWR报告的生成
- CSDN博客开发组第29周更新报告
- 通用布缆国内外标准比对研究报告概要 推荐
- leetCode解题报告之Reorder List
- “买书方案”分析报告
- 第五次c++作业报告
- 安天移动安全发布“大脏牛”漏洞分析报告(CVE-2017-1000405)
- Forrest 2015年第三季度内存网格分析报告
- 2007上半年度 电脑病毒疫情和互联网安全报告(四)